【发布时间】:2016-05-16 11:00:10
【问题描述】:
我有要求,我需要每秒从 MQ 接收消息,消息将是 XML 格式,所以我需要编写一个高效的 MDB。这里的问题是我是 MQ、JMS、Spring JMS 和 Spring Integration 的新手,但不是 Spring 强硬的。
到目前为止,基于谷歌搜索,我能够编写以下代码
MDB
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class MyMessageListener implements MessageListener{
@Override
public void onMessage(Message m) {
TextMessage message=(TextMessage)m;
try{
System.out.println(message.getText());
}catch (Exception e) {e.printStackTrace(); }
}
}
XML 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd">
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"
p:brokerURL="tcp://localhost:61616" />
<bean id="listener" class="com.springexample.MyMessageListener"></bean>
<jms:listener-container container-type="default" connection-factory="connectionFactory"
acknowledge="auto">
<jms:listener destination="myfirstqueue" ref="listener" method="onMessage"></jms:listener>
</jms:listener-container>
</beans>
我知道我写的是非常基本的,但我不知道什么是有效的,如何提供事务支持以及如何处理这样的负载,我每秒钟都会收到消息。
我应该使用 Spring JMS 还是 Spring Integration 非常感谢任何帮助。
【问题讨论】:
-
“每秒 xml 消息”并不是一个很高的要求。任何 mq/configuration 都可以处理
-
你能告诉我什么样的配置可以帮助
-
同意,一个高度可扩展的解决方案是您每秒可能处理 1000 条消息,每隔几秒一条消息应该不是问题,除非您在那段时间内无法处理一条消息框架。那时,我会尝试优化我的应用程序逻辑并以这种方式加快速度。
标签: spring optimization jms spring-integration