深入理解activeMQ 消息通訊

從例子出發

Broker

public class BrokerMain {

	
	public static void main(String[] args) throws Exception {
		
		String brokerName="broker1";
		
		BrokerService broker=BrokerFactory.createBroker("broker:tcp://localhost:16117");
		brokerName="broker2";		
		broker.setBrokerName(brokerName);
//		broker.addNetworkConnector("static:tcp://localhost:16116");
		broker.start();
	}
}

Producer:

public class ProducerMain {
	
	public static void main(String[] args) throws JMSException {
		String queueName="myqueue";
		ActiveMQConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://localhost:16117");
		Connection connection=connectionFactory.createConnection();
		Session session=	connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		Destination dest=session.createQueue(queueName);
		MessageProducer producer=session.createProducer(dest);
		Message message=session.createTextMessage("produce a text message");
		producer.send(message);
	}

}
Consumer:

public class ConsumerMain {
	
	public static void main(String[] args) throws JMSException {
		String queueName="myqueue";
		ActiveMQConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://localhost:16117");
		Connection connection=connectionFactory.createConnection();
		Session session=	connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		Destination dest=session.createQueue(queueName);
		MessageConsumer consumer=session.createConsumer(dest);
		consumer.setMessageListener(new MessageListener(){

			@Override
			public void onMessage(Message message) {
				ActiveMQTextMessage text = (ActiveMQTextMessage) message;
				try {
					System.out.println(text.getText());
				} catch (JMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}});
		connection.start();
		
	}

}


通訊流程圖:


通訊流程(broker中重要部件)



設計模式:

BrokerFactory中的抽象工廠模式:


broker責任鏈:

Transport責任鏈:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章