测试:
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class NonPerSender2 { public static void main(String[] args) throws JMSException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616"); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createTopic("MyTopic"); for (int i = 0; i < 1; i++) { MessageProducer producer = session.createProducer(destination); for (int j = 0; j < 1; j++) { TextMessage message = session.createTextMessage(i + "===message222--" + j); producer.send(message); } session.commit(); } session.close(); connection.close(); } }
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class NoPerReceiver2 { public static void main(String[] args) throws JMSException { ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616"); for (int i = 0; i < 1; i++) { Thread t = new MyT(factory); t.start(); } } } class MyT extends Thread { private ConnectionFactory connectionFactory = null; public MyT(ConnectionFactory connectionFactory) { this.connectionFactory = connectionFactory; } @Override public void run() { try { Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createTopic("MyTopic"); for (int i = 0; i < 1; i++) { final MessageConsumer consumer = session.createConsumer(destination); consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { TextMessage txtMsg = (TextMessage) message; try { System.out.println(consumer + "收到消息:" + txtMsg.getText()); session.commit(); } catch (JMSException e) { e.printStackTrace(); } } }); } } catch (JMSException e) { e.printStackTrace(); } } }
先启动消费者,后启动生产者。可以一条一条的发送和接收。
修改生产者的发送数量。
生产者会阻塞在那里。并且,要正常运行的话,要重启mq。
如果想每次都能发3条怎么办呢?
这个时候,没有事务。就不是批量提交了。而是一条一条的发。只要单条消息不超过10b,就能发送多条。