抛弃手册,开启TongWeb+TongLINK/Q的开发方式

问题:

当使用TongWeb+TongLINK/Q产品,想用JMS开发消息服务时,不知如何使用?

1.当你看TongLINK/Q手册《JMS编程参考》时,在给你讲TongWeb5.0+TongLINK/Q8.1的消息驱动bean(Message-Driven Bean,MDB)配置。

2.当你去看TongWeb7的《用户手册》时,在给你讲TongWeb7.0+TongLINK/Q8.1的消息驱动bean(Message-Driven Bean,MDB)配置。

3. TongWeb5.0太老了,MDB开发、配置过程太繁琐。

正确的使用方式:

        采用spring  jms框架,抛弃了TongLINK/Q的TongJMS_ra.rar包,省略了一层层的TongWeb配置和MDB开发,单纯的可以通过spring的bean配置快速完成开发,并且可以在ActiveMQ、IBM MQ等JMS服务器之间任意切换,TongWeb无需要任何更改。大致步骤如下:

1.配置TongLINK/Q的jms,只列出片段。如果细讲TLQ配置过程会又臭又长。

#tlqjndi.conf配置片段
[JndiSystem]		# 
[Factory]		# 连接工厂
#
[FactoryRecord]		# 
FactoryName = RemoteConnectionFactory		# 连接工厂名称
FactoryType = xqf		#  连接工厂类型
tmqiAddressList = tlq://192.168.32.100:10024	# 远程方式的连接url
#
############################################################
[JndiQueue]		# Jndi队列
#
[JndiQueueRecord]		# 
JndiQueueName = lq		# jndi队列名
TlqQueueName = lq		# TLQ的队列名

2. spring bean配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<!-- 配置TLQ的JNDI上下文 -->
	<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
		<property name="environment">
			<props>
				<prop key="java.naming.factory.initial">tongtech.jms.jndi.JmsContextFactory</prop>
				<prop key="java.naming.provider.url">tlkq://192.168.32.100:10024</prop>
			</props>
		</property>
	</bean>
	<!-- 配置TLQ的JMS连接工厂 -->
	<bean id="JmsQueueConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiTemplate" ref="jndiTemplate" />
		<property name="jndiName" value="RemoteConnectionFactory" />
	</bean>

	<!-- 配置发送队列 -->
	<bean id="sendDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiTemplate" ref="jndiTemplate" />
		<property name="jndiName" value="sendq" />
	</bean>
	<!-- 配置接收队列 -->
	<bean id="receDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiTemplate" ref="jndiTemplate" />
		<property name="jndiName" value="lq" />
	</bean>

	<!-- 配置JMS模版 -->
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<property name="connectionFactory" ref="JmsQueueConnectionFactory" />
	</bean>

	<!-- 消息监听器,相当于MDB类 -->
	<bean id="myTextListener" class="com.tong.jms.TextListener">
	</bean>
	
	<!-- jms消费 -->
	<bean id="javaConsumer"
		class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="JmsQueueConnectionFactory" />
		<property name="destination" ref="receDestination" />
		<property name="messageListener" ref="myTextListener" />
	</bean>
</beans>

3.编写com.tong.jms.TextListener接收消息,相当于MDB

//接受lq队列消息
public class TextListener implements MessageListener {
    public void onMessage(Message message) {
        TextMessage msg = null; 
        try {
            if (message instanceof TextMessage) {
                msg = (TextMessage) message;
                System.out.println("Reading message: " + msg.getText());
            } else {
                System.out.println("Message of wrong type: "
                        + message.getClass().getName());
            }
        } catch (JMSException e) {
            System.out.println("JMSException in onMessage(): " + e.toString());
        } catch (Throwable t) {
            System.out.println("Exception in onMessage():" + t.getMessage());
        }
    }
}

4.编写发送消息的bean 

//发送sendq队列消息片段
JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");
Destination destination = (Destination) ctx.getBean("sendDestination");
template.send(destination, new MessageCreator() {
	  public Message createMessage(Session session) throws JMSException {
		  return session.createTextMessage("发送消息:Hello TongLINK/Q  Text Message!");
	  }
});

5. 完成,是不是比手册的配置过程简单的多?

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值