@Override
  public TransactionCheckListener checkListener() {
    if (this.defaultMQProducer instanceof TransactionMQProducer) {
      TransactionMQProducer producer = (TransactionMQProducer) defaultMQProducer;
      return producer.getTransactionCheckListener();
    }

    return null;
  }
 public void initTransactionEnv() {
   TransactionMQProducer producer = (TransactionMQProducer) this.defaultMQProducer;
   this.checkRequestQueue = new LinkedBlockingQueue<Runnable>(producer.getCheckRequestHoldMax());
   this.checkExecutor =
       new ThreadPoolExecutor( //
           producer.getCheckThreadPoolMinSize(), //
           producer.getCheckThreadPoolMaxSize(), //
           1000 * 60, //
           TimeUnit.MILLISECONDS, //
           this.checkRequestQueue);
 }
Beispiel #3
0
  public static void main(String[] args) throws MQClientException, InterruptedException {

    TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl();
    TransactionMQProducer producer = new TransactionMQProducer("please_rename_unique_group_name");
    // 事务回查最小并发数
    producer.setCheckThreadPoolMinSize(2);
    // 事务回查最大并发数
    producer.setCheckThreadPoolMaxSize(2);
    // 队列数
    producer.setCheckRequestHoldMax(2000);

    producer.setNamesrvAddr("127.0.0.1:9876");
    producer.setTransactionCheckListener(transactionCheckListener);
    producer.start();

    String[] tags = new String[] {"TagA", "TagB", "TagC", "TagD", "TagE"};
    TransactionExecuterImpl tranExecuter = new TransactionExecuterImpl();
    for (int i = 0; i < 100; i++) {
      try {
        Message msg =
            new Message(
                "TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes());
        SendResult sendResult = producer.sendMessageInTransaction(msg, tranExecuter, null);
        System.out.println(sendResult);

        Thread.sleep(10);
      } catch (MQClientException e) {
        e.printStackTrace();
      }
    }

    for (int i = 0; i < 100000; i++) {
      Thread.sleep(1000);
    }

    producer.shutdown();
  }