RabbitMQ是一個消息中間件,負責消息的接收和投遞。它可以從生產者那里接收消息,并且投遞到消費者。在這期間,它可以路由、緩存,并且可以根據你給的規則持久化消息。
?圖例說明:
表示生產者 (發信人)
表示隊列 (信箱)
world?表示消費者(收信人)
?
第一個“hello world” 實例的簡單實現:
?
??
helloworld表白。?
?本實例基于java的實現:
消息發送者:
?
import?com.rabbitmq.client.*;
public?class?ClientSender?{
????public?static?void?main(String[]?args)?throws?java.io.IOException?{
????????ConnectionFactory?factory=new?ConnectionFactory();
????????factory.setHost("localhost");
????????factory.setUsername("guest");
????????factory.setPassword("123456");
????????factory.setVirtualHost("/");
????????Connection?conn=factory.newConnection();
????????Channel?channel=conn.createChannel();
????????String?queueName="myqueue";
????????channel.queueDeclare(queueName,?false,?false,?false,null);
????????String?message="hello?world"+Math.random();
????????channel.basicPublish("",queueName,?null,message.getBytes());
????????System.out.print("send?'"+message+"'");
????????channel.close();
????????conn.close();
????}
}
public?class?ClientSender?{
????public?static?void?main(String[]?args)?throws?java.io.IOException?{
????????ConnectionFactory?factory=new?ConnectionFactory();
????????factory.setHost("localhost");
????????factory.setUsername("guest");
????????factory.setPassword("123456");
????????factory.setVirtualHost("/");
????????Connection?conn=factory.newConnection();
????????Channel?channel=conn.createChannel();
????????String?queueName="myqueue";
????????channel.queueDeclare(queueName,?false,?false,?false,null);
????????String?message="hello?world"+Math.random();
????????channel.basicPublish("",queueName,?null,message.getBytes());
????????System.out.print("send?'"+message+"'");
????????channel.close();
????????conn.close();
????}
}
?
java hello world、消息接收者
?
import?com.rabbitmq.client.*;
public?class?ClientReceiver?{
????private?final?static?String?queueName="myqueue";
????public?static?void?main(String[]?args)?throws?java.io.IOException,java.lang.InterruptedException{
????????ConnectionFactory?factory=new?ConnectionFactory();
????????factory.setHost("localhost");
????????factory.setUsername("guest");
????????factory.setPassword("123456");
????????Connection?conn=factory.newConnection();
????????Channel?channel=conn.createChannel();
????????channel.queueDeclare(queueName,?false,?false,?false,?null);
????????System.out.println("?[*]?Waiting?for?messages.?To?exit?press?CTRL+C");
????????QueueingConsumer?consumer=new?QueueingConsumer(channel);
????????channel.basicConsume(queueName,?true,consumer);
????????while?(true)?{
????????????QueueingConsumer.Delivery?delivery=consumer.nextDelivery();????
????????????String?message=new?String(delivery.getBody());
????????????System.out.println("?[x]?Received?'"?+?message?+?"'");
????????????Thread.sleep(100);
????????}
????}
}
public?class?ClientReceiver?{
????private?final?static?String?queueName="myqueue";
????public?static?void?main(String[]?args)?throws?java.io.IOException,java.lang.InterruptedException{
????????ConnectionFactory?factory=new?ConnectionFactory();
????????factory.setHost("localhost");
????????factory.setUsername("guest");
????????factory.setPassword("123456");
????????Connection?conn=factory.newConnection();
????????Channel?channel=conn.createChannel();
????????channel.queueDeclare(queueName,?false,?false,?false,?null);
????????System.out.println("?[*]?Waiting?for?messages.?To?exit?press?CTRL+C");
????????QueueingConsumer?consumer=new?QueueingConsumer(channel);
????????channel.basicConsume(queueName,?true,consumer);
????????while?(true)?{
????????????QueueingConsumer.Delivery?delivery=consumer.nextDelivery();????
????????????String?message=new?String(delivery.getBody());
????????????System.out.println("?[x]?Received?'"?+?message?+?"'");
????????????Thread.sleep(100);
????????}
????}
}
?
?
?
rabbitmq docker、?