企业集成模式实践——用actviemq集成.net应用系统

来源:互联网 发布:免费虚拟局域网软件 编辑:程序博客网 时间:2024/05/16 01:29

最近,在企业集成方面,做了一些技术尝试,用activemq来集成java与.net系统。

1.首先,搭建主数据管理系统

主界面如下:

3.在spring的配置文件中配置名为testTopic的队列:

<!-- 配置JMS连接工厂 -->       <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">             <property name="connectionFactory">                <bean class="org.apache.activemq.spring.ActiveMQConnectionFactory">                    <property name="brokerURL" value="tcp://localhost:61616"/>                                 </bean>               </property>                   <!--  <property name="maxConncetions"  value="1"/>-->        </bean>             <!--   <bean id ="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">                    <property name="brokerURL" value="tcp://localhost:61616"/>                                 </bean>-->        <bean id="SendMessage" class="test.SendMessage">           <property name="jmsTemplate" ref="jmsTemplate"/>           <property name="topicName" value="testTopic"/>                                   </bean>       <!--   <bean id="Listener" class="test.Listener">            <constructor-arg ref="jmsTemplate"/>                 <constructor-arg value="testTopic" />                     </bean> -->        <!-- 配置JMS模版 -->       <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">              <property name="connectionFactory" ref="jmsFactory"/>               <property name="defaultDestination" ref="testTopic"/>              <property name="explicitQosEnabled" value="true"/>             <property name="deliveryMode" value="1" />        </bean>         <bean id="testTopic" class="org.apache.activemq.command.ActiveMQTopic">            <constructor-arg value="testTopic" />                  </bean>

4.发送消息:

package test;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.JMSException;import javax.jms.MapMessage;import javax.jms.Message;import javax.jms.Session;import javax.jms.Topic;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.core.MessageCreator;public class SendMessage {private JmsTemplate jmsTemplate;private String topicName;private Topic testTopic;public void setJmsTemplate(JmsTemplate jmsTemplate){this.jmsTemplate = jmsTemplate;}public void setTopicName(String topicName) {this.topicName = topicName;}public void sendMessage(final Map message) throws JMSException,InterruptedException{ if(testTopic==null){System.out.println(jmsTemplate);ConnectionFactory cf =jmsTemplate.getConnectionFactory();Connection conn = cf.createConnection();Session sess = conn.createSession(false,Session.AUTO_ACKNOWLEDGE);testTopic = sess.createTopic(topicName);}jmsTemplate.send(testTopic, new MessageCreator(){@Overridepublic Message createMessage(Session session) throws JMSException {MapMessage mapMess = session.createMapMessage();Set temp = message.entrySet();Iterator temp2 = temp.iterator();while(temp2.hasNext()){Entry entry = (Entry)temp2.next();mapMess.setObject((String)entry.getKey(), entry.getValue());}return mapMess;}});}/** * 测试 * @param args */public static void main(String[] args) {}}

5.接收消息:

package test;import javax.jms.JMSException;import javax.jms.MapMessage;import javax.jms.Message;import javax.jms.MessageConsumer;import javax.jms.MessageListener;import javax.jms.Session;import javax.jms.Topic;import org.springframework.jms.JmsException;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.listener.DefaultMessageListenerContainer;public class Listener  implements MessageListener{private JmsTemplate jmsTemplate;private String topicName;public Listener(JmsTemplate jmsTemplate,String topicName){this.jmsTemplate = jmsTemplate;this.topicName = topicName;Topic topic;try{topic = this.jmsTemplate.getConnectionFactory().createConnection().createSession(false, Session.AUTO_ACKNOWLEDGE).createTopic(topicName);DefaultMessageListenerContainer dc = new DefaultMessageListenerContainer();dc.setPubSubDomain(true);dc.setDestination(topic);dc.setConnectionFactory(this.jmsTemplate.getConnectionFactory());dc.setPubSubNoLocal(false);dc.setMessageListener(this);dc.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);dc.initialize();dc.start();}catch(JMSException e){e.printStackTrace();}}@Overridepublic void onMessage(Message arg0) {// TODO Auto-generated method stubSystem.out.println("收到的消息:"+arg0);MapMessage map = (MapMessage) arg0;try {System.out.println(map.getObject("Name"));} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

6.点击消息同步,执行SendMessage:

7.在.net中进行接收监听,点击订阅消息:


原创粉丝点击