消息中间件面试专题及答案

java (5.7万) 2020-05-08 15:11:44

activeMQ 如何调优

  1. 使用非持久化消息;
  2. 需要确保消息发送成功时使用事务来将消息分批组合
public void sendTransacted() throws JMSException {
ActiveMQConnectionFactory cf = new
ActiveMQConnectionFactory();
Connection connection = cf.createConnection();
connection.start();
Session session = connection.createSession(true,
Session.SESSION_TRANSACTED);
Topic topic = session.createTopic("Test.Transactions");
MessageProducer producer = session.createProducer(topic);
int count = 0;
for (int i = 0; i < 1000; i++) {
Message message = session.createTextMessage("message " +
i);
producer.send(message);
if (i != 0 && i % 10 == 0) {
	session.commit();
} } }
public void sendNonTransacted() throws JMSException {
ActiveMQConnectionFactory cf = new
ActiveMQConnectionFactory();
Connection connection = cf.createConnection();
connection.start();
// create a default session (no transactions)
Session session = connection.createSession(false,
Session.AUTO_ACKNOWELDGE);
Topic topic = session.createTopic("Test.Transactions");
MessageProducer producer = session.createProducer(topic);
int count = 0;
for (int i = 0; i < 1000; i++) {
Message message = session.createTextMessage("message " +
i);
producer.send(message);
} }
THE END

Leave a Reply