服务器安装docker的镜像
docker pull registry.docker-cn.com/library/rabbitmq:3-management
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq ID
* 自动配置
* 1、RabbitAutoConfiguration
* 2、有自动配置了连接工厂ConnectionFactory
* 3、RabbitProperties封装了 RabbitMQ的配置
* 4、RabbitTemplate:给RabbitMQ发送和接收消息
* 5、AmqpAdmin:RabbitMQ的系统管理功能组件
* 创建和删除exchange,queue,
* 6、RabbitListener和EnableRabbit监听消息队列的内容
* @param args
*/
RabbitMQ的配置文件
spring.rabbitmq.host=47.100.42.0
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.port=5672
.........................................................
单播以及接收数据
@Test
public void context(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("msg","1111111111111");
map.put("data", Arrays.asList("Hello",123,true));
rabbitTemplate.convertAndSend("exchange.direct","#.news",map);
rabbitTemplate.convertAndSend("exchange.direct","#.news",new Book("demo","demo"));
}
@Test
public void receive(){
Object o = rabbitTemplate.receiveAndConvert("#.news");
System.out.println(o.getClass());
System.out.println(o);
}
广播
@Test
public void sendMsg(){
rabbitTemplate.convertAndSend("exchange.fanout","",new Book("demo","demo"));
}
RabbitMQ的监听机制
@RabbitListener(queues = "#.news")
public void receive(Book book){
System.out.println("receive"+book);
}
@RabbitListener(queues = "")
public void receiveMessage(Message message){
System.out.println(message.getBody());
System.out.println(message.getMessageProperties());
}
@EnableRabbit
public class DemoApplication {
AmqpAdmin:RabbitMQ的系统管理功能组件
@Test
public void createExchange(){
amqpAdmin.declareExchange(new DirectExchange("exchange_test"));
System.out.println("create exchange success......");
amqpAdmin.declareQueue(new Queue("queue_test",true));
System.out.println("create queue success......");
amqpAdmin.declareBinding(new Binding("queue_test", Binding.DestinationType.QUEUE,"exchange_test","amqp",null));
}