队列消费入口

    @Component
    @DependsOn(RabbitMqConfiguration.RABBITMQ_CONFIGURATION)
    public class MemberReceiverConsumer {
        @Autowired
        private MemberMQService memberMQService;

        /**
             * 队列监听
             *
             * @param message
             * @param channel
             * @throws 异常
             */
            @RabbitListener(queues = "队列名")
            public void mqListener(Message message, Channel channel) throws IOException {
                byte[] body = message.getBody();
                String msg = "";
                try {
                    if (null != body && body.length > 0) {
                        msg = new String(body);
                        LogUtil.logApplicationInfo("获取队列信息:" + msg);
                        T t = JSONObject.parseObject(msg, T.class);
                        memberMQService.mqListener(t);
                    }
                } catch (BusinessException ex) {
                    LogUtil.logApplicationWarn("异常日志", ex);
                } catch (Exception ex) {
                    LogUtil.logApplicationError("异常日志", ex);
                } finally {
                    // 队列ack处理
                    channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
                }

            }


    }

队列规范

规范

* 1 监听队列文件名 _Consumer后缀结尾
* 2 队列监听放在rabbitmq包里,队列监听和控制器功能类似,消费逻辑放在service里
* 3 监听文件处理数据,异常,ack等逻辑
* 4 类注解@Component
* 5 方法注解 @RabbitListener(queues = "队列名")

Java服务区分队列控制消费者数量

* 1 framework 版本 1.0.0+
* 2 在rabbit Consumer 类上加上@DependsOn(RabbitMqConfiguration.RABBITMQ_CONFIGURATION)
* 3 在@RabbitListener,加上containerFactory = "syncMember",syncJfkMember为上一步在配置中心里配置的containerFactory名称
* 4 配置中心加上对应配置:其中gotone.queues为固定前缀标识,syncMember为需要配置消费者的containerFactory名称,
使用者执行定义。支持驼峰,-和_,不支持. 不可以使用如queue.sync.member这种.分割的命名,配置如下
配置key 配置value 配置描述
gotone.queues.syncMember.concurrency 1 Minimum number of consumers
gotone.queues.syncMember.maxConcurrency 2 Maximum number of consumers
gotone.queues.syncMember.acknowledge-mode MANUAL Acknowledge mode of container. 默认为MANUAL

results matching ""

    No results matching ""