環境準備
安裝RabbitMq: 個人是先在Win10便攜機上安裝VMWare Workstation, 再安裝Cent OS 作業系統,在此基礎上安裝RabbitMQ,
安裝程序可以參考這篇博客: https://blog.csdn.net/hsxy123123/article/details/104006744
需要注意RabbitMQ官網提供的erlang與RabbitMQ的配套版本,按版本安裝,

訊息生產者Demo代碼
private final static String QUEUE_NAME = "elon_queue";
/**
* 生產訊息發送到佇列
*
* @param messageBody 訊息體
* @author elon
*/
public void produceMessage(String messageBody) {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.*.*.*");
factory.setPort(5672);
factory.setUsername("***");
factory.setPassword("*******");
try {
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
channel.basicPublish("", QUEUE_NAME, null, messageBody.getBytes());
LOGGER.info("Sent {}", messageBody);
} catch (Exception e) {
LOGGER.info("Produce message fail.", e);
}
}ren
發送訊息使用默認交換器 “” ,指定佇列名稱elon_queue,
訊息消費者Demo代碼
private final static String QUEUE_NAME = "elon_queue";
/**
* 消費訊息
*/
public void consumeMessage() {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.*.*.*");
factory.setPort(5672);
factory.setUsername("***");
factory.setPassword("*******");
try {
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
LOGGER.info("Receive message from queue:{}", message);
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, tag->{});
} catch (Exception e) {
LOGGER.error("Consume message exception.", e);
}
}
消費者增加 channel.queueDeclare(QUEUE_NAME, false, false, false, null) 這行代碼是考慮消費者行程可能先于生產者啟動的情況,
可以啟動多個消費者行程接收佇列elon_queue的訊息,但只要有一個消費者收到訊息應答后其它消費者將不會再收到該訊息,這樣做的目的是提升系統的可靠性,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423364.html
標籤:其他
上一篇:RabbitMQ應用Demo:使用exchange廣播訊息
下一篇:2022虎年的期望和新年Flag
