与不同框架整合时mybatis的使用区别 (对比activeMQ,见其他类似标题两篇)
与不同框架整合时mybatis的使用区别 (对比activeMQ,见其他类似标题两篇)
一般mybatis或者redis,等连接数据库的框架以及activeMQ应用规则都差不多:
1,配置好工厂
2,工厂注入模版配置好模版(这时候其实已经可以直接通过这个模版操作了)
3,如果spring提供了人性话的封装这个模版的类,或其他框架可以人性化整合这个模版,就可以更方便的使用,不用每次都获取模版然后操作
比如1,没有用封装的模版(就直接用模版)
2,有框架对其封装了就用封装后的操作入口即可,更方便:
用spring封装了模版(配置的时候将模版注入spring的一个类),或者spring集成的比如mapper,这个mapper会自动识别id=sqlSession的模版,
那么也就有了封装,就不必每次使用模版操作了,直接用mapper提供的人性化的操作入口即可
3,像active的发送端的集成模版的集成类是自己写的,那么用的时候按照自己的操作方法用即可,接收端由于是监听所以不需要模版只要把工厂
集成在监听里面即可(同时监听也要指明接收类)
<bean id="topicSendConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<!-- <property name="brokerURL" value="udp://10.0.1.216:8123" /> -->
<!-- UDP传输方式 -->
<property name="brokerURL" value="tcp://10.0.1.222:61616" />
<!-- TCP传输方式 -->
<property name="useAsyncSend" value="true" />
</bean>
<bean id="topicListenConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<!-- <property name="brokerURL" value="udp://10.0.1.216:8123" /> -->
<!-- UDP传输方式需要在activemq上面做配置 -->
<property name="brokerURL" value="tcp://10.0.1.222:61616" />
<!-- TCP传输方式 -->
</bean>
<!-- 定义主题 -->
<bean id="myTopic" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="esteelChat-mq1" />
</bean>
<bean id="messageConvertForSys" class="com.esteel.chat.mq.MessageConvertForSys" />
<!-- TOPIC send jms模板 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="topicSendConnectionFactory" />
<property name="defaultDestination" ref="myTopic" />
<property name="messageConverter" ref="messageConvertForSys" />
<!-- 发送模式 DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久 -->
<property name="deliveryMode" value="1" />
<property name="pubSubDomain" value="true" />
<!-- 开启订阅模式 -->
</bean>
<!-- 消息发送方 -->
<bean id="topicSender" class="com.esteel.chat.mq.MessageSender">
<property name="jmsTemplate" ref="jmsTemplate" />
</bean>
<!-- <bean id="springContextUtil" class="com.esteel.common.SpringContextUtil" /> -->
<!-- 消息接收方 -->
<bean id="topicReceiver" class="com.esteel.chat.mq.MessageReceiver" />
<!-- 主题消息监听容器,一经注册,自动监听 -->
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="topicListenConnectionFactory" />
<property name="pubSubDomain" value="true" />
<!-- true 订阅模式 -->
<property name="destination" ref="myTopic" />
<!-- 目的地 myTopic -->
<property name="subscriptionDurable" value="true" />
<!-- -这里是设置接收客户端的ID,在持久化时,但这个客户端不在线时,消息就存在数据库里,直到被这个ID的客户端消费掉 -->
<property name="clientId" value="clientId_esteelChat_17" />
<property name="messageListener" ref="topicReceiver" />
</bean>
///////发送封装
public class MessageSender {
private JmsTemplate jmsTemplate;
public void sendMessage(String msg) {
jmsTemplate.convertAndSend(msg);
}
public JmsTemplate getJmsTemplate() {
return jmsTemplate;
}
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
}
//接收监听
@Controller
public class MessageReceiver implements MessageListener {
@Autowired
TbConOrdService tbConOrdService;
@Autowired
TbConOrdPriceService tbConOrdPriceService;
@Autowired
TbConObjService tbConObjService;
@Autowired
RedisService redisService;
//@Autowired
//private TbConOrdMapper tbConOrdMapper;
public void onMessage(Message m) {
}}