從例子出發
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責任鏈: