2.RabbitMQ的HelloWorld模型之发布消息

image.png

第一种直连模型
image.png

在上面的模型中,有以下概念:

  • P:生产者,也就是要发送消息的程序
  • C:消费者,消息的接受者,会一直等待消息到来
  • queue:消息队列,图中红色部分。类似于一个邮箱,可以缓存消息:生产者向其中投递消息,消费者从中取出消息

然后我们在web管理界面中设置新账号ems以及新的域/ems,如图所示分配权限

image.png

然后我们就可以编写测试代码

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import org.junit.Test;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Provider {

    //生产消息
    @Test
    public void testSendMessage() throws IOException, TimeoutException {
    //创建mq的连接工厂对象
    ConnectionFactory connectionFactory = new ConnectionFactory();
    //设置连接rabbitmq的主机
    connectionFactory.setHost("127.0.0.1");
    //设置端口号
    connectionFactory.setPort(5672);
    //设置连接哪个虚拟主机
    connectionFactory.setVirtualHost("/ems");
    //设置访问虚拟主机的用户名和密码
    connectionFactory.setUsername("ems");
    connectionFactory.setPassword("ems");

    //获取连接对象
    Connection connection = connectionFactory.newConnection();

    //获取连接中通道
    Channel channel=connection.createChannel();

    //通道绑定对应消息队列
    //参数1:队列名称 如果队列不存在自动创建
        //参数1:队列名称 如果队列不存在自动创建
        //参数2:用来定义队列特性是否要持久化true/false
        //参数3:exclusive是否独占队列true/false
        //参数4:autoDelete是否在消费完成后自动删除队列true/false
        //参数5:额外附加参数
        channel.queueDeclare("hello",false,false,false,null);
    //发布消息
        //参数1:交换机名称
        //参数2:队列名称
        //参数3:传递消息额外设置
        //参数4:消息的具体内容
        channel.basicPublish("","hello",null,"hello rabbitmq".getBytes());
        channel.close();
        connection.close();
    }
}

运行以后查看队列情况

image.png

这是我们采用直连的方式进行最简单的发布消息的测试

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容