无论是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
相关推荐
你可以将这个监听器配置到之前创建的消息监听器容器中。 7. **主题订阅**:如果你使用的是主题,需要明确指定订阅策略。例如,你可以使用`SimpleMessageListenerContainer`的`setSubscriptionDurable()`方法来创建...
在上面的代码中,我们使用了@Bean注解来注入消息监听容器和消息监听器适配器。 最后,需要对消息队列的功能进行单元测试,例如: ``` @RunWith(SpringRunner.class) @SpringBootTest public class ReceiverTest { ...
配置完成后,启动Spring应用,消息监听器会自动开始监听指定的队列。当通过`JmsTemplate`发送消息时,`MessageListener`会接收到并处理这些消息。 ### 结论 集成ActiveMQ和Spring可以轻松地在应用中引入消息队列,...
5. **设置消息消费者**: 创建一个消息监听器接口实现类,Spring会自动调用该类的方法来处理接收到的消息。例如: ```java @Component public class JmsConsumer implements MessageListener { @Override public...
- **灵活性与扩展性**:EJB3提供了更为灵活的配置选项和更好的扩展性,支持更多的依赖注入策略和事件监听器,使得集成外部服务和资源变得更加容易。 - **性能与可维护性**:尽管EJB3在编译时会产生更多的元数据,但...
这种情况往往发生在客户端频繁地触发会话变化或更新时,会话的监听器会不断产生消息并由消息监听容器处理。如果默认的线程池配置不当,就容易造成线程资源的过度消耗,甚至导致系统资源耗尽。 这个问题的核心是...
在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...
3. **创建消息监听器容器**:Spring的`DefaultMessageListenerContainer`或`SimpleMessageListenerContainer`允许我们在后台运行消息监听器。我们需要指定连接工厂、目的地以及消息监听器接口的实现类。 4. **定义...
接下来,我们需要创建一个消息监听器类 `ReceiveMessageListener`,该类将负责处理从队列接收到的消息。 ```java public class ReceiveMessageListener implements MessageListener { @Override public void ...
4. **消息消费者**:另一端,Spring配置了消息监听器容器,如`DefaultMessageListenerContainer`,它负责从队列中拉取消息并调用相应的消息监听器接口实现,处理接收到的消息。监听器可以是任何实现了`Message...
5. 定义消息监听器:可以使用@RabbitListener注解定义消费者,监听特定的队列,实现消息的接收和处理。 三、SpringBoot中的RabbitMQ核心概念 1. Exchange:SpringBoot允许我们动态创建Exchange,并通过@Bean注解...
- `MessageListenerContainer`配置了消息监听器,当接收到消息时自动调用监听器的方法处理消息。 - `MessageConverter`转换消息对象,如将Java对象转换为JMS消息格式。 2. **WebLogic Server中的JMS服务**: - ...
例如,可以使用`<jms:listener-container>`元素配置一个ActiveMQ的连接工厂,然后定义消息监听器来处理接收到的消息。 ```xml <bean id="connectionFactory" class="org.springframework.jms.connection....
4. **注入消息监听器**: 在上面的配置中,我们已经将`messageListener`引用到了监听器容器中。现在,Spring会自动将消息传递给`onMessage`方法。 5. **发送消息**: 要发送消息,我们可以创建一个`JmsTemplate` ...
2. **MessageConsumer**: 这是接收消息的组件,通常是一个监听器,通过实现MessageListener接口或者使用Spring的@JmsListener注解,当队列或主题中有新消息时,会自动触发处理函数。 3. **Queue/Topic**: 在JMS中,...
在应用中,我们可以通过依赖注入的方式获取`JmsTemplate`实例,然后使用它来发送和接收消息。例如,发送一个字符串消息: ```java @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String ...
4. **消息监听器** MDB通过实现`MessageListener`接口来处理消息。只需重写`onMessage(Message message)`方法,当接收到消息时,这个方法会被调用。消息可以是TextMessage、ObjectMessage、BytesMessage等JMS类型。...
- **JMS消息的调用过程**:消息驱动Bean监听JMS消息队列或主题,当接收到消息时自动触发处理方法。 - **JMS消息的两种类型**:点对点消息和发布/订阅消息。 - **处理点对点消息**:点对点消息模型中,消息发送者将...
5. 配置监听器:如果需要实时处理消息,可以定义一个实现了MessageListener接口的类,并在Spring配置中配置一个DefaultMessageListenerContainer,将监听器注入其中。 **应用示例** 在"activemq服务器及spring简单...