Spring boot 错误-兔子模板发布确认-回复代码=403,回复文本=访问被拒绝-无法发布到内部exchange

Spring boot 错误-兔子模板发布确认-回复代码=403,回复文本=访问被拒绝-无法发布到内部exchange,spring-boot,spring-amqp,Spring Boot,Spring Amqp,我的用例是: 订阅Q1并按指定大小批量读取邮件 传递已读邮件集合以进行处理 成功确认Q2发布后,将收集到的消息发布到Q2,并将确认消息发布到Q1 代码 @组件 公共类EPPQ2订户{ 私有静态最终记录器Logger=LoggerFactory.getLogger(EPPQ2Subscriber.class); @自动连线 RabbitMqConfig RabbitMqConfig; @自动连线 AppConfig-AppConfig; List messageList=new ArrayList

我的用例是:

  • 订阅Q1并按指定大小批量读取邮件
  • 传递已读邮件集合以进行处理
  • 成功确认Q2发布后,将收集到的消息发布到Q2,并将确认消息发布到Q1
  • 代码
    @组件
    公共类EPPQ2订户{
    私有静态最终记录器Logger=LoggerFactory.getLogger(EPPQ2Subscriber.class);
    @自动连线
    RabbitMqConfig RabbitMqConfig;
    @自动连线
    AppConfig-AppConfig;
    List messageList=new ArrayList();
    List diliveryTag=new ArrayList();
    /**
    *方法是侦听器的接收消息方法,在有消息准备好读取时调用
    *@param message-已封装消息的域对象
    *@param通道-rabitmq客户端通道
    *@param messageId-@TODO稍后删除它。
    *@param messageProperties-amqp message properties包含传递标签等消息属性。。
    */
    @RabbitListener(id=“messageListener”,queues=“#{rabbitMqConfig.getSubscriberQueueName()}”,containerFactory=“queueListenerContainer”)
    public void receiveMessage(消息消息,通道通道,@Header(“id”)字符串messageId,
    MessageProperties(消息属性){
    LOGGER.info(“结果:+message.getClass()+”:“+message.toString());
    if(messageList.size()
    if(相关性!=null){
    LOGGER.info(“收到”+(确认?:“确认”)+
    “相关性:”+相关性);
    如果(确认){
    //这是收到的确认书。。
    //下面是ack Q1.correlation.getId和ack的代码
    eppQ2Publisher.ackMessage(新)
    Long(correlation.getId().toString());
    }否则{
    //未收到确认,无需执行任何操作
    需要重试的东西。。
    }
    }
    });
    rabbitTemplate.setReturnCallback((消息,replyCode,
    replyText、exchange、routingKey)->
    {
    LOGGER.error(“返回:“+message+”\nreplyCode:”+
    replyCode+“\nreplyText:+replyText+
    “\nexchange/rk:”+exchange+“/”+routingKey);
    });
    返回兔模板;
    }
    /**
    *Bean Jackson2JsonMessageConverter
    *@return Jackson2JsonMessageConverter
    */
    @豆子
    公共Jackson2JsonMessageConverter生产商Ackson2MessageConverter(){
    返回新的Jackson2JsonMessageConverter();
    }
    }
    公共接口EPPQ2Publisher{
    公共无效发送消息(消息消息消息,长deliveryTag);
    公共无效发送消息(列表msgList、通道通道、列表deliveryTagList);
    公共消息(长deliveryTag);
    }
    @组成部分
    公共类EPPQ2PublisherImpl实现EPPQ2Publisher{
    @自动连线
    RabbitMqConfig RabbitMqConfig;
    @自动连线
    私人兔样板兔样板;
    专用信道;
    /**
    *方法sendMessage,用于将单个已清除和加密的消息发送到发布者队列(Q2)。
    *@param msg-消息域对象
    *@param deliveryTag-是消息传递标记。
    */
    @凌驾
    公共无效发送消息(消息消息消息,长deliveryTag){
    rabbitTemplate.convertAndSend(rabbitMqConfig.getPublisherTopic(),rabbitMqConfig.getRoutingKey(),msg,新的CorrelationData(deliveryTag.toString());
    }
    /**
    *sendMessages用于将已清除和加密的消息列表发送到发布服务器队列(Q2)
    *@param msgList-已清除和加密邮件的列表
    *@param通道-是ampq客户端通道
    *@param deliveryTagList-是传入邮件传递标记的列表。
    */
    @凌驾
    公共无效发送消息(列表msgList、频道通道、列表DeliveryTagList){
    if(this.channel==null){
    this.channel=channel;
    }
    对于(int i=0;i
    org.springframework.amqp.rabbit.connection.CachingConnectionFactory从AMQChannel创建缓存兔子频道(amqp://dftp\u订户@10.15.190.18:5672/hydra.services,2)

    我希望成为dftp_的发布者,我想我的主题配置没有正确注入

    错误日志: org.springframework.amqp.rabbit.core.rabbitmplate[0;39m:在RabbitMQ通道:缓存的兔子通道:AMQChannel上执行回调rabbitmplate$$Lambda$285/33478758(amqp://dftp_subscriber@10.15.190.18:5672/hydra.services,2),康涅狄格州:Proxy@1dc339f共享兔子连接:SimpleConnection@2bd7c8 [代表=amqp://dftp_subscriber@10.15.190.18:5672/hydra.services,localPort=55553] org.springframework.amqp.rabbit.core.rabbitmplate[0;39m:发布消息(正文:“{”标题:“{”重试计数“:”0,“发布事件类型“:”AUTH“,”有效载荷“:{”MTI“:”100”,“MTI请求“:”100”,“PAN“:”6011000000000000”,“PROCCODE:”请求“:”00”,“发件人帐户“:”00”,“收件人帐户“:”00”,“交易金额“:”000000000 100”,“传输MMDDHMMSS:”“0518202930”、“STAN”:“000001”、“本地时间”HHMMS:“010054”、“本地日期”YYMMDD:“180522”、“到期日期”YYMM:“2302”、“商户类型”:“5311”、“收单国家代码”:“840”、“POS输入模式”:“02”、“POS输入”