SpringBoot:rabbitmq使用,@EnableRabbit +  @RabbitListener 作用, AmqpAdmin:创建和删除 Queue,Exchange,Binding

下载安装:

在自己的虚拟机上面用命令下载

 docker pull registry.docker-cn.com/library/rabbitmq:3.6-management           management表示是带管理页面的

启动:

docker run -d -p 5672:5672  -p 15672:15672 --name myrabbitmq  3951818b0610

然后配置一个转化器(转成json),rabbitmqTemplate操作发送和接收消息

@Configuration
public class myConfig {

    @Bean
    public MessageConverter messageConverter() {
        return new Jackson2JsonMessageConverter();

    }
}

配置文件

spring:
  rabbitmq:
    host: 192.168.1.113
    username: guest
    password: guest
    virtual-host: /
    port: 5672

测试:rabbitmqTemplate操作发送和接收消息

 /**
     * 单播
     */
    @Test
    public void test1() {
//       Message需要自己构建一个自定义的消息内容和消息体
//        rabbitTemplate.send(exchange,routingKey,message);
        Map<String,Object> map = new HashMap<>();
        map.put("msg","这是一个消息");
        map.put("", Arrays.asList("newsjj",true,1));
        //对象被序列号后发送出去
        rabbitTemplate.convertAndSend("exchange.direct","atguigu.news",map);

    }

    @Test
    public void receive() {
//        Message atguigu = rabbitTemplate.receive("atguigu");
        Object atguigui = rabbitTemplate.receiveAndConvert("atguigui");
        System.out.print(atguigui.getClass());
        System.out.println(atguigui);
    }

    /**
     * 广播
     */
    @Test
    public void sendMsg(){
        rabbitTemplate.convertAndSend("exchange.fanout","",new Book("红楼梦","曹雪芹"));
    }

@EnableRabbit +  @RabbitListener 监听消息队列的内容

@EnableRabbit 在主main方法开启基于注解的rabbit

 @RabbitListener(queues = "atguigu.news")
    public void receive(Book book){
        System.out.println("收到消息:"+book);
    }

    @RabbitListener(queues = "atguigu")
    public void receive02(Message message){
        System.out.println(message.getBody());
        System.out.println(message.getMessageProperties());
    }
 AmqpAdmin : RabbitMQ系统管理功能组件; 
 AmqpAdmin:创建和删除 Queue,Exchange,Binding
@Test
	public void createExchange(){
        //创建exchange
		amqpAdmin.declareExchange(new DirectExchange("amqpadmin.exchange"));
		System.out.println("创建完成");

	}

@Test
	public void createExchange(){

    //创建queue
		amqpAdmin.declareQueue(new Queue("amqpadmin.queue",true));

	}

@Test
	public void createExchange(){
       
//       创建banding
		amqpAdmin.declareBinding(new Binding("amqpadmin.queue", 
         Binding.DestinationType.QUEUE,"amqpadmin.exchange","amqp.haha",null));

		
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值