java方式 - 点对点
p2p模式(点对点模式):生产者生产的每一条消息只能被消费一次。
生产者:
public class TestOriginalProducer {
private final static String USER = ActiveMQConnectionFactory.DEFAULT_USER;
private final static String PASSWORD = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
private final static String BROKER_URL = "tcp://192.168.0.111:61616";
public static void main(String[] args) {
TestOriginalProducer sender = new TestOriginalProducer();
sender.send();
}
public void send() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(USER, PASSWORD, BROKER_URL);
QueueConnection connection = null;
QueueSession session = null;
Queue destination = null;
QueueSender sender = null;
try {
connection = factory.createQueueConnection();
connection.start();
session = connection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("test-queue1");
sender = session.createSender(destination);
sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
for (int i = 0; i < 10000; i++) {
String str = "hello " + i;
TextMessage msg = session.createTextMessage(str);
sender.send(msg);
}
session.commit();
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (session != null) {
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
消费者(第一种方式):
public class TestOriginalConsumer {
private final static String USER = ActiveMQConnectionFactory.DEFAULT_USER;
private final static String PASSWORD = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
private final static String BROKER_URL = "tcp://192.168.0.111:61616";
public static void main(String[] args) {
TestOriginalConsumer receiver = new TestOriginalConsumer();
receiver.receiveMessage();
}
public void receiveMessage() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(USER, PASSWORD, BROKER_URL);
QueueConnnection connection = null;
QueueSession session = null;
Queue destination = null;
QueueReceiver receiver = null;
try {
connection = factory.createQueueConnection();
connection.start();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("test-queue1");
receiver = session.createReceiver(destination);
while (true) {
Object msg = receiver.receive();
if (msg instanceof TextMessage) {
TextMessage textMessage = (TextMessage) msg;
if (!textMessage.getText().equals("") && msg != null) {
System.out.println(textMessage.getText());
} else {
break;
}
}
}
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (session != null) {
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
消费者(第二种方式):
public class TestOriginalConsumer {
private final static String USER = ActiveMQConnectionFactory.DEFAULT_USER;
private final static String PASSWORD = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
private final static String BROKER_URL = "tcp://192.168.0.111:61616";
public static void main(String[] args) {
TestOriginalConsumer receiver = new TestOriginalConsumer();
receiver.receiveMessage();
}
public void receiveMessage() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(USER, PASSWORD, BROKER_URL);
QueueConnnection connection = null;
QueueSession session = null;
Queue destination = null;
QueueReceiver receiver = null;
try {
connection = factory.createQueueConnection();
connection.start();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("test-queue1");
receiver = session.createReceiver(destination);
receiver.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;\
System.out.println(textMessage.getText());
}
}
});
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (session != null) {
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
java方式 - 发布订阅
发布订阅模式:一个生产者生产的消息,可以被多个消费者消费,前提是消费者订阅了生产者发布的主题。
生产者:
public class TestOriginalProvider {
private final static String USER = ActiveMQConnectionFactory.DEFAULT_USER;
private final static String PASSWORD = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
private final static String BROKER_URL = "tcp://192.168.0.111:61616";
public static void main(String[] args) {
new TestOriginalProvider().send();
}
public void send() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(USER, PASSWORD, BROKER_URL);
TopicConnection connection = null;
TopicSession session = null;
TopicPublisher publisher = null;
Topic destination = null;
try {
connection = factory.createTopicConnection();
connection.start();
session = connection.createTopicSession(true, TopicSession.AUTO_ACKNOWLEDGE);
destination = session.createTopic("test-topic");
publisher = session.createTopicPublisher(destination);
publisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
for (int i = 0; i < 10000; i++) {
String str = i + " hello world";
TextMessage textMessage = session.createTextMessage();
publisher.send(textMessage);
}
session.commit();
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (session != null) {
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
消费者(第一种方式):
public class TestOriginalConsumer {
private final static String USER = ActiveMQConnectionFactory.DEFAULT_USER;
private final static String PASSWORD = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
private final static String BROKER_URL = "tcp://192.168.0.111:61616";
public static void main(String[] args) {
new TestOriginalConsumer().send();
}
public void send() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(USER, PASSWORD, BROKER_URL);
TopicConnection connection = null;
TopicSession session = null;
TopicSubscriber subscriber = null;
Topic destination = null;
try {
connection = factory.createTopicConnection();
connection.start();
session = connection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
destination = session.createTopic("test-topic");
subscriber = session.createTopicSubscriber(destination);
subscriber.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
while (true) {
Object obj = subscriber.receive();
if (obj instanceof TextMessage) {
TextMessage textMessage = (TextMessage) obj;
if (!textMessage.getText().equals("")) {
System.out.println(textMessage.getText());
} else {
break;
}
}
}
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (session != null) {
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
消费者(第二种方式):
public class TestOriginalConsumer {
private final static String USER = ActiveMQConnectionFactory.DEFAULT_USER;
private final static String PASSWORD = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
private final static String BROKER_URL = "tcp://192.168.0.111:61616";
public static void main(String[] args) {
new TestOriginalConsumer().send();
}
public void send() {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(USER, PASSWORD, BROKER_URL);
TopicConnection connection = null;
TopicSession session = null;
TopicSubscriber subscriber = null;
Topic destination = null;
try {
connection = factory.createTopicConnection();
connection.start();
session = connection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
destination = session.createTopic("test-topic");
subscriber = session.createTopicSubscriber(destination);
subscriber.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
subscriber.setMessageListener(new MessageListener() {
public void onMessage(Object obj) {
if (obj instanceof TextMessage) {
TextMessage textMessage = (TextMessage) obj;
if (!textMessage.getText().equals("")) {
System.out.println(textMessage.getText());
}
}
}
})
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (session != null) {
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}