无论是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
相关推荐
此文档是C#开发的消息队列系统,适用于消息队列入门与新手。 在Windows 7 上安装消息队列的步骤 打开“控制面板”。 单击“程序”,然后在“程序和功能”下, 单击“打开或关闭 Windows 功能”。 -或者-单击“经典...
发送端读取指定的文件,并且按照环境变量中设置的消息队列键值进行发送。如果要改代码,只要把键值改一下,结构体储存要发送的消息的那个数组对应改成自己想发送的值,就可以很好的实现功能。接收端同样按环境变量...
C#消息队列发送及接收
解决 “消息队列不可用 ” 附加案例 :消息队列异步接收 消息队列局域网发送与接收
进程与消息队列进程与消息队列简单例进程与消息队列进程与消息队列简单例进程与消息队列进程与消息队列简单例进程与消息队列进程与消息队列简单例进程与消息队列进程与消息队列简单例
描述ucOS消息队列的使用,此文网络截文,感谢原创作者。
消息队列工具,这是一个在查看消息队列中消息的一个很好的工具软件。
消息队列中间件调研文档。ActiveMQ、RabbitMQ、RocketMq、Joram、HornetQ、OpenMQ等的对比。
FreeRTOS PPT_消息队列的介绍,本章节为大家讲解 FreeRTOS 的一个重要的通信机制----消息队列,初学者要熟练掌握,因为消息队列在实际项目中应用较多。 消息队列的概念及其作用 消息队列就是通过RTOS 内核提供的...
包含消息队列、Autofac接口注入、Aspose.word pdf相关操作
C++封装实现的异步加锁消息队列,支持多线程,完美封装,可用于消息接收、处理
Java消息队列常见面试题,2022年最新,104页,祝您斩获高薪offer! Java消息队列常见面试题,2022年最新,104页,祝您斩获高薪offer! Java消息队列常见面试题,2022年最新,104页,祝您斩获高薪offer! Java消息...
实现消息队列的关键因素是考量不同线程访问消息队列的同步问题。本实现涉及到几个知识点 std::lock_guard 介绍 std::lock_gurad 是 C++11 中定义的模板类。定义如下: template <class> class lock_guard; lock_...
MQ 介绍 消息队列 消息中间件MQ 介绍 消息队列 消息中间件
消息队列简介PPT中包含了什么是消息队列、常用消息队列介绍、消息队列的应用,其中常用的消息队列主要讲了ActiveMQ、RabbitMQ、Kafka、RocketMQ,应用举例只列举了RocketMQ
进程与消息队列进程与消息队列进程与消息队列进程与消息队列进程与消息队列进程与消息队列进程与消息队列进程与消息队列进程与消息队列
Linux消息队列 ---------学习linux下 c编程之消息队列
易语言简单的多线程消息队列。@Patek。
RabbitMQ实战 高效部署分布式消息队列 RabbitMQ实战 高效部署分布式消息队列 RabbitMQ实战 高效部署分布式消息队列