在第一次学习rabbitmq的时候,遇到了许多不懂得
第一步导包
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.14.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
第二步新增生产者
public class Producer {
//队列名称
public static final String QUEUE_NAME="hello";
//发消息
public static void main(String[] args) throws Exception {
//创建一个连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
//工厂的ip连接RabbitMQ队列
connectionFactory.setHost("110.12.247.134");
//端口号
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("my_vhost"); //填写自己
//用户名 填写自己的
connectionFactory.setUsername("admin");
//密码 填写自己的
connectionFactory.setPassword("admin");
Connection connection = connectionFactory.newConnection();
System.out.println(connection);
//获取信道
Channel channel = connection.createChannel();
/*生成一个队列
* 1.队列的名称
* 2.队列里面的消息是否持久化(磁盘) 默认情况下消息存储在内存当中
* 3.该队列是否只供一个消费者进行消费,是否进行消费共享,false只能供一个消费者,true提供给所有消费者
* 4.是否自动删除 最后一个消费者断开连接以后 该队列是否自动删除 true自动删除 false 不自动删除
* 5.其他参数
* */
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
//发消息
String message="Hello World";
/**发送一个消费
* 1.发送到那个交换机
* 2.路由的key值是哪个 本次是队列的名称
* 3.其他参数信息
* 4.发送消息的消息体
* */
channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
System.out.println("消息发送完毕");
}
}
在这里中:
connectionFactory.setVirtualHost("my_vhost");//填写自己的队列名称,如果你的为”/“则填写''/''
第三步新增消费者
public class Consumer {
//队列名称
public static final String QUEUE_NAME="hello";
public static void main(String[] args) throws Exception {
//创建一个连接工厂
ConnectionFactory connectionFactory = new ConnectionFactory();
//工厂的ip连接RabbitMQ队列
connectionFactory.setHost("110.42.247.134");
//端口号
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("my_vhost");
//用户名
connectionFactory.setUsername("admin");
//密码
connectionFactory.setPassword("admin");
Connection connection = connectionFactory.newConnection();
//获取信道
Channel channel = connection.createChannel();
//声明 接受消息
DeliverCallback deliverCallback=(consumerTag,messagee) -> {
System.out.println(new String(messagee.getBody()));
};
//取消消息时的回调
CancelCallback cancelCallback=(message)->{
System.out.println("消费消息被中断");
};
//消费者接受消息
/*消费者消费消息
*1.消费那个队列
* 2.消费成功后是否要自动应答 true 代表的是自动应答 false代表的是手动应答
* 3.消费者未成功消费的回调
* 4.消费者取消消费的回调
* */
channel.basicConsume(QUEUE_NAME,true, deliverCallback, cancelCallback);
}
}
消息获取成功
注意如果你用的云服务器需要打开这两个端口 5672 15672文章来源:https://www.toymoban.com/news/detail-671533.html
如果你使用的虚拟机则你需要关闭防火墙文章来源地址https://www.toymoban.com/news/detail-671533.html
到了这里,关于rabbitmq消费者与生产者的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!