在第一次學習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>
第二步新增生產(chǎn)者
public class Producer {
//隊列名稱
public static final String QUEUE_NAME="hello";
//發(fā)消息
public static void main(String[] args) throws Exception {
//創(chuàng)建一個連接工廠
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.隊列里面的消息是否持久化(磁盤) 默認情況下消息存儲在內(nèi)存當中
* 3.該隊列是否只供一個消費者進行消費,是否進行消費共享,false只能供一個消費者,true提供給所有消費者
* 4.是否自動刪除 最后一個消費者斷開連接以后 該隊列是否自動刪除 true自動刪除 false 不自動刪除
* 5.其他參數(shù)
* */
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
//發(fā)消息
String message="Hello World";
/**發(fā)送一個消費
* 1.發(fā)送到那個交換機
* 2.路由的key值是哪個 本次是隊列的名稱
* 3.其他參數(shù)信息
* 4.發(fā)送消息的消息體
* */
channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
System.out.println("消息發(fā)送完畢");
}
}
在這里中:
connectionFactory.setVirtualHost("my_vhost");//填寫自己的隊列名稱,如果你的為”/“則填寫''/''

第三步新增消費者
public class Consumer {
//隊列名稱
public static final String QUEUE_NAME="hello";
public static void main(String[] args) throws Exception {
//創(chuàng)建一個連接工廠
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()));
};
//取消消息時的回調(diào)
CancelCallback cancelCallback=(message)->{
System.out.println("消費消息被中斷");
};
//消費者接受消息
/*消費者消費消息
*1.消費那個隊列
* 2.消費成功后是否要自動應答 true 代表的是自動應答 false代表的是手動應答
* 3.消費者未成功消費的回調(diào)
* 4.消費者取消消費的回調(diào)
* */
channel.basicConsume(QUEUE_NAME,true, deliverCallback, cancelCallback);
}
}
消息獲取成功

注意如果你用的云服務器需要打開這兩個端口 5672 15672文章來源:http://www.zghlxwxcb.cn/news/detail-671533.html

如果你使用的虛擬機則你需要關閉防火墻文章來源地址http://www.zghlxwxcb.cn/news/detail-671533.html
到了這里,關于rabbitmq消費者與生產(chǎn)者的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!