`
y806839048
  • 浏览: 1125465 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

消息队列监听器无法注入bean的问题解决

阅读更多

 

无论是srping配置文件中的bean,注解中的bean,dubbo注解中的bean到了spring之后都会到spring的上下文,

dubbo注解bean有时获取不到需要在customer另外用配置的方式即可(两套上下文问题

 

activeMq,rabbitMq这些用监听形式配置的bean会先于dispatch.xml中的bean扫描,所以直接用@Autwire会获取不到dispatch.xml中的bean,

此时需要显示从上下文获取(初始化时机问题

 

public class BeanUtil implements ApplicationContextAware {//实现这个接口可以自动注入spring的上下文

 

    private static WebApplicationContext context;

 

 

 

  @Override

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

        context = (WebApplicationContext) applicationContext;

 

/*        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());

*/    }

    }

 

 

 

 

 

package com.houbank.incoming.web.rabbitMq;

 

import java.util.Date;

 

 

import com.alibaba.dubbo.config.annotation.Reference;

import com.houbank.incoming.api.FinancialSalesSMSMqMessageFacade;

import com.houbank.incoming.model.domain.SMSMqMessage;

import com.houbank.incoming.web.controller.FinancialInterfaceAccountInfoController;

import com.houbank.incoming.web.session.BeanUtil;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

import org.apache.commons.lang3.StringUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

import org.springframework.stereotype.Controller;

import org.springframework.stereotype.Service;

 

 

 

 

@Controller

public class XSApplyIdListener {

    private Logger logger = LoggerFactory.getLogger(XSApplyIdListener.class);

 

@Reference

private FinancialSalesSMSMqMessageFacade financialSalesSMSMqMessageFacade;

 

 

 

public void listen(Object message) {

       //  {"pass":true, "orderNo": "11111"} {"pass":false, "orderNo": "11111", "failReason": "身份证不对"}  {"pass":false, "orderNo": "11111", "failReason": "[0000],电销微信交单失败"}

       //微信交单状态,0:不符合进件标准;1:待处理,2待客户补充材料,3已提交待复核;4:已提交待复核信审接收成功 5:已提交待复核信审接收失败 6:已提交待复核信审接收失败【可以重复提交信审】

       try {

   financialSalesSMSMqMessageFacade =   (FinancialSalesSMSMqMessageFacade)BeanUtil.getBean("financialSalesSMSMqMessageFacade");

   BeanUtil.getBean("restTemplate1");

   logger.info("receive message: " + message);  //  jSONObjectReq = JSONObject.fromObject(jsonReq.trim());

   String message1 = new String(((byte[])message), "UTF-8");

   SMSMqMessage xinshenReturnMessage = (SMSMqMessage)JSONObject.toBean(JSONObject.fromObject(message1), SMSMqMessage.class);

   System.out.print("============jyhjdtyjdy================="+xinshenReturnMessage);

   if(xinshenReturnMessage == null){

   return;

   }

   financialSalesSMSMqMessageFacade.insert(xinshenReturnMessage);

//   String orderNo = xinshenReturnMessage.get("orderNo")  == null ? "" : xinshenReturnMessage.getString("orderNo");

 

       } catch (Exception e) {

       logger.error(e.getMessage());

       return ;

       }

    }

}

 

 

参考:

https://blog.csdn.net/gaoshili001/article/details/77776863

 

 

 

分享到:
评论

相关推荐

    ActiveMQ消息队列主题订阅Spring整合

    你可以将这个监听器配置到之前创建的消息监听器容器中。 7. **主题订阅**:如果你使用的是主题,需要明确指定订阅策略。例如,你可以使用`SimpleMessageListenerContainer`的`setSubscriptionDurable()`方法来创建...

    SpringBoot利用redis集成消息队列的方法

    在上面的代码中,我们使用了@Bean注解来注入消息监听容器和消息监听器适配器。 最后,需要对消息队列的功能进行单元测试,例如: ``` @RunWith(SpringRunner.class) @SpringBootTest public class ReceiverTest { ...

    ActiveMQ与spring集成实例之使用消息监听器

    配置完成后,启动Spring应用,消息监听器会自动开始监听指定的队列。当通过`JmsTemplate`发送消息时,`MessageListener`会接收到并处理这些消息。 ### 结论 集成ActiveMQ和Spring可以轻松地在应用中引入消息队列,...

    JMS之Spring +activeMQ实现消息队列

    5. **设置消息消费者**: 创建一个消息监听器接口实现类,Spring会自动调用该类的方法来处理接收到的消息。例如: ```java @Component public class JmsConsumer implements MessageListener { @Override public...

    EJB2和EJB3 消息驱动bean

    - **灵活性与扩展性**:EJB3提供了更为灵活的配置选项和更好的扩展性,支持更多的依赖注入策略和事件监听器,使得集成外部服务和资源变得更加容易。 - **性能与可维护性**:尽管EJB3在编译时会产生更多的元数据,但...

    解决Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程问题

    这种情况往往发生在客户端频繁地触发会话变化或更新时,会话的监听器会不断产生消息并由消息监听容器处理。如果默认的线程池配置不当,就容易造成线程资源的过度消耗,甚至导致系统资源耗尽。 这个问题的核心是...

    spring的Applicationcontext对事件的监听,实现类似MQ的效果

    在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...

    Spring+Weblogic JMS

    3. **创建消息监听器容器**:Spring的`DefaultMessageListenerContainer`或`SimpleMessageListenerContainer`允许我们在后台运行消息监听器。我们需要指定连接工厂、目的地以及消息监听器接口的实现类。 4. **定义...

    Spring+JMS+ActiveMQ+Tomcat实现消息服务_服务器应用

    接下来,我们需要创建一个消息监听器类 `ReceiveMessageListener`,该类将负责处理从队列接收到的消息。 ```java public class ReceiveMessageListener implements MessageListener { @Override public void ...

    Spring和ActiveMQ的整合实例源码ActiveMQSpringDemo.zip

    4. **消息消费者**:另一端,Spring配置了消息监听器容器,如`DefaultMessageListenerContainer`,它负责从队列中拉取消息并调用相应的消息监听器接口实现,处理接收到的消息。监听器可以是任何实现了`Message...

    springboot_rabbitmq.zip

    5. 定义消息监听器:可以使用@RabbitListener注解定义消费者,监听特定的队列,实现消息的接收和处理。 三、SpringBoot中的RabbitMQ核心概念 1. Exchange:SpringBoot允许我们动态创建Exchange,并通过@Bean注解...

    Spring+weblogic接收JMS消息

    - `MessageListenerContainer`配置了消息监听器,当接收到消息时自动调用监听器的方法处理消息。 - `MessageConverter`转换消息对象,如将Java对象转换为JMS消息格式。 2. **WebLogic Server中的JMS服务**: - ...

    结合Spring2.0和ActiveMQ进行异步消息调用

    例如,可以使用`<jms:listener-container>`元素配置一个ActiveMQ的连接工厂,然后定义消息监听器来处理接收到的消息。 ```xml <bean id="connectionFactory" class="org.springframework.jms.connection....

    Spring JMS 消息处理-基于JNDI

    4. **注入消息监听器**: 在上面的配置中,我们已经将`messageListener`引用到了监听器容器中。现在,Spring会自动将消息传递给`onMessage`方法。 5. **发送消息**: 要发送消息,我们可以创建一个`JmsTemplate` ...

    JMS+activeMQ消息中间件

    2. **MessageConsumer**: 这是接收消息的组件,通常是一个监听器,通过实现MessageListener接口或者使用Spring的@JmsListener注解,当队列或主题中有新消息时,会自动触发处理函数。 3. **Queue/Topic**: 在JMS中,...

    Spring In Action 使用Spring发送和接收JMS消息

    在应用中,我们可以通过依赖注入的方式获取`JmsTemplate`实例,然后使用它来发送和接收消息。例如,发送一个字符串消息: ```java @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String ...

    EJB3中MessageDrivenBean知识

    4. **消息监听器** MDB通过实现`MessageListener`接口来处理消息。只需重写`onMessage(Message message)`方法,当接收到消息时,这个方法会被调用。消息可以是TextMessage、ObjectMessage、BytesMessage等JMS类型。...

    EJB3.1讲解

    - **JMS消息的调用过程**:消息驱动Bean监听JMS消息队列或主题,当接收到消息时自动触发处理方法。 - **JMS消息的两种类型**:点对点消息和发布/订阅消息。 - **处理点对点消息**:点对点消息模型中,消息发送者将...

    activemq spring

    5. 配置监听器:如果需要实时处理消息,可以定义一个实现了MessageListener接口的类,并在Spring配置中配置一个DefaultMessageListenerContainer,将监听器注入其中。 **应用示例** 在"activemq服务器及spring简单...

Global site tag (gtag.js) - Google Analytics