1. 程式人生 > >rabbitmq入門 hello world

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 -> {

});