jms

1.创建factory

< amq:connectionFactory id="jmsFactory" brokerURL ="failover:(tcp://localhost:61616)" />

2.创建队列

<amq:queue name="user_registerInformation" physicalName "union.user.registerInformation.queue"></amq:queue >

3.创建发送方

<bean id ="userRegisterInformationMessageProducer" class="com.UserRegisterInformationMessageProducer" >

<property name="jmsTemplate" ref="jmsTemplate" ></property>

<property name="destination" ref="user_registerInformation" ></property>

</bean >

<bean id ="jmsTemplate" class="org.springframework.jms.core.JmsTemplate" >

<property name ="connectionFactory" >

<bean class="org.springframework.jms.connection.SingleConnectionFactory" >

<property name ="targetConnectionFactory" ref="jmsFactory" />

</bean>

</property>

<!-- 增加默认目的地 -->

<property name ="defaultDestination" ref="user_registerInformation" />

</bean>

4.创建接收方

<bean id ="jmsTransactionManager"

             class="org.springframework.jms.connection.JmsTransactionManager" >

<property name ="connectionFactory" ref="jmsFactory" />

</bean>

<bean id="userRegisterInformationMessageConsumer" class ="com.UserRegisterInformationMessageConsumer" />

<!--注册 监听器 -->

<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer" >

<property name ="connectionFactory" ref="jmsFactory" />

<!-- 消息队列来源 -->

<property name ="destination" ref="user_registerInformation" />

<!-- 监听类 -->

<property name ="messageListener" ref="userRegisterInformationMessageConsumer" />

<property name ="sessionTransacted" value="true" /> <!-- 本地事务 -->

<property name ="transactionManager" ref="jmsTransactionManager" /><!-- 数据库-->

<property name ="concurrentConsumers" value="1" ></property>

<property name ="maxConcurrentConsumers" value="10" ></property>

</bean>

5.实现类:

public class UserRegisterInformationMessageProducer {

       private JmsTemplate jmsTemplate ;

       private Destination destination ;

       public void sendMessage() {

             jmsTemplate.send(new MessageCreator() {

                   public Message createMessage(Session session) throws JMSException {

                        MapMessage mm = session. createMapMessage();

                        mm. setString("name", "张三");

                        mm. setString("accountActivationCode", "工");

                        mm. setString("email", "[email protected]");

                         return mm;

                  }

            });

      }

       public static void main(String[] args) {

              ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"./applicationContext.xml" ,"./applicationContext-jms.xml" });

              UserRegisterInformationMessageProducer userRegisterInformationMessageProducer = (UserRegisterInformationMessageProducer) applicationContext.getBean("userRegisterInformationMessageProducer" );

              userRegisterInformationMessageProducer.sendMessage();

              System. out.println("成功发送了一条JMS消息" );

      }

       public JmsTemplate getJmsTemplate() {

             return jmsTemplate ;

      }

       public void setJmsTemplate(JmsTemplate jmsTemplate) {

             this.jmsTemplate = jmsTemplate;

      }

       public Destination getDestination() {

             return destination ;

      }

       public void setDestination(Destination destination) {

             this.destination = destination;

      }

}

public class UserRegisterInformationMessageConsumer implements MessageListener {

       public void onMessage(Message message) {

             // TODO Auto-generated method stub

            MapMessage mm = (MapMessage) message;

             try {

                  System. out.println("开始接收信息:" );

                  String username = mm.getString( "name");

                  String accountActivationCode = mm.getString("accountActivationCode" );

                  String email = mm.getString( "email");

                  System. out.println("name:" +username);

                  System. out.println("email:" +email);

                   try {

                         Thread.sleep(5*1000);

                  } catch (InterruptedException e) {

                        e.printStackTrace();

                  }

            } catch (JMSException e) {

                  e.printStackTrace();

            }

      }

}

猜你喜欢

转载自guwq2014.iteye.com/blog/2396222
jms