rabbitmq入門 hello world
rabbitmq是一個訊息代理,接收訊息並且分發訊息。可以把它想象成一個郵件投遞室,發郵件的時候先把郵件發到郵遞室,你確定有人會將信件投遞到收件人那裡,這裡比喻裡,rabbitmq是一個投遞箱,投遞室,投遞人
不同之處是rabbitmq不需要用紙處理訊息,它接收,儲存,投遞二進位制的訊息塊
rabbitmq包含幾個部分
生產者
訊息佇列,rabbitmq內部,用來儲存訊息,是一個訊息快取區
消費者 等待接收訊息的程式
一個應用可以同時為生產者和消費者
“HELLO WORLD”
引入依賴包 com.rabbitmq
amqp-client
具體程式碼如下
生產者
public class Send {
private final static String QUEUE_ANME = "hello";
public static void main(String[] args) {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) {
channel.queueDeclare(QUEUE_ANME, false, false, false, null);
String message = "hello world!";
channel.basicPublish("", QUEUE_ANME, null, message.getBytes());
System.out.println(" [x] Send '" + message + "'");
} catch (Exception e) {
}
}
}
消費者
public class Recv {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println("[*] waiting for messages.");
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println(" [x] received '" + message + "'");
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
});