rabbitmq消费者和生产者
在第一次学习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
如果你使用的虚拟机则你需要关闭防火墙
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgffjab
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01