RabbitMQ快速入門
阿新 • • 發佈:2018-07-21
提高 The clas rod serializa java 一個隊列 有一個 中間件
- 用處:
- 重要的概念有 4 個,分別為:虛擬主機,交換機,隊列,和綁定。
- 發送(單次發送):
/**
* 創建連接連接到MabbitMQ
*/
ConnectionFactory factory = new ConnectionFactory();
//設置MabbitMQ所在主機ip或者主機名
factory.setHost("127.0.0.1");
//創建一個連接
Connection connection = factory.newConnection();
//創建一個頻道
Channel channel = connection.createChannel();
//指定一個隊列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//發送的消息
String message = "hello world!";
//往隊列中發出一條消息
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
//channel.basicPublish("", QUEUE_NAME, null, SerializationUtils.serialize(messageInfo));實體使用序列化
System.out.println("Sent ‘" + message + "‘");
//關閉頻道和連接
channel.close();
connection.close();
- 接收(實時接收、循環調用):
//打開連接和創建頻道,與發送端一樣
ConnectionFactory factory = new ConnectionFactory();
//設置MabbitMQ所在主機ip或者主機名
factory.setHost("127.0.0.1");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
//聲明隊列,主要為了防止消息接收者先運行此程序,隊列還不存在時創建隊列。
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println("Waiting for messages. To exit press CTRL+C");
?
//創建隊列消費者
QueueingConsumer consumer = new QueueingConsumer(channel);
//指定消費隊列
channel.basicConsume(QUEUE_NAME, true, consumer);
while (true)
{
//nextDelivery是一個阻塞方法(內部實現其實是阻塞隊列的take方法)
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
//MessageInfo messageInfo = (MessageInfo)SerializationUtils.deserialize(body);實體使用反序列化
System.out.println("Received ‘" + message + "‘");
}
- 配置文件:
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
RabbitMQ快速入門