美文网首页
2-3 MessageListenerAdapter

2-3 MessageListenerAdapter

作者: Finlay_Li | 来源:发表于2020-07-15 18:06 被阅读0次

    MessageListenerAdapter简介

    消息监听适配器。
    通常用于需要自定义MessageConverter 的场景

    MessageConverter

    1. 自定义转换器:MessageConverter,需要重写下面两个方法:
      toMessage():java对象转换为Message。
      fromMessage():Message对象转换为java对象。

    2. 常用于自定义:图片类型、PDF、PPT、流媒体。

    3. ContentTypeDelegatingMessageConverter 全局消息转换器

    示例

    package com.finlay.scaffold.config;
    
    import org.springframework.amqp.core.Message;
    import org.springframework.amqp.core.MessageProperties;
    import org.springframework.amqp.support.converter.MessageConversionException;
    import org.springframework.amqp.support.converter.MessageConverter;
    
    public class ImageMessageDelegate implements MessageConverter {
        @Override
        public Message toMessage(Object o, MessageProperties messageProperties) throws MessageConversionException {
            return null;
        }
    
        @Override
        public Object fromMessage(Message message) throws MessageConversionException {
            return null;
        }
    }
    
    @Bean
        public SimpleMessageListenerContainer simpleMessageListenerContainer(ConnectionFactory connectionFactory) {
            SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
            //1. 设置监听的队列
            container.setQueueNames("topic.que", "fanout.que");
            // 2. 设置消费者数量,默认就是1
            container.setConcurrentConsumers(1);
            container.setMaxConcurrentConsumers(5);
            // 4. 设置消息是否重回队列
            container.setDefaultRequeueRejected(false);
    
            // 5. 设置消息的签收模式
            container.setAcknowledgeMode(AcknowledgeMode.AUTO);
    
            // 6.1 声明Listener消费消息
            /*container.setMessageListener((ChannelAwareMessageListener) (message, channel) -> {
                String msg = new String(message.getBody());
                System.out.println("*******消费者*******:" + msg);
            });*/
    
            //6.2 声明监听适配器
            MessageListenerAdapter adapter = new MessageListenerAdapter();
            adapter.setDelegate(new ImageMessageDelegate());//ImageMessageDelegate自定义的消息转换器实现
            container.setMessageListener(adapter);
            return container;
        }
    

    amqpTemplate.send() 不使用默认的SimpleMessageConverter

    相关文章

      网友评论

          本文标题:2-3 MessageListenerAdapter

          本文链接:https://www.haomeiwen.com/subject/rzcjhktx.html