rocketmq 실전 발송 사무 메시지

rocketmq 는 트 랜 잭 션 메 시 지 를 보 내 는 것 을 지원 합 니 다.즉,메 시 지 를 보 내 는 트 랜 잭 션 을 지원 합 니 다.어떻게 실현 하 는 지 알 아 보 겠 습 니 다.
실전 에 서 는 모두RocketMQTemplate형식 으로 보 여 주 었 고 집적 방안 은 을 상세 하 게 볼 수 있다.
먼저@RocketMQTransactionListener로 컬 트 랜 잭 션 과 트 랜 잭 션 을 모 의 하 는 모니터 를 정의 합 니 다.
@Slf4j
@RocketMQTransactionListener(txProducerGroup = "tx-group")
public class TransactionListenerImpl implements RocketMQLocalTransactionListener {

    @Override
    public RocketMQLocalTransactionState executeLocalTransaction(Message msg, Object arg) {

        //          
        log.info("============== executeLocalTransaction");

        return RocketMQLocalTransactionState.UNKNOWN;
    }

    @Override
    public RocketMQLocalTransactionState checkLocalTransaction(Message msg) {

        //         
        log.info("============== checkLocalTransaction");


        return RocketMQLocalTransactionState.COMMIT;
    }
}

그 다음 에 한 소비 자 를 정의 하고'topic-tx'로 설정 합 니 다.
@RocketMQMessageListener(topic = "topic-tx", consumerGroup = "tx-consumer-group")
public class TransactionConsumer implements RocketMQListener<Message> {

    @Override
    public void onMessage(Message message) {
        log.info("topic-tx received message: {}", message);
    }
}

마지막 으로 메시지 생산 자 를 정의 하여"topic-tx"테마 로 메 시 지 를 보 내 고"tx-group"(사무 모니터 가 설정 한topic과 일치 하도록 지정 해 야 합 니 다.
@Slf4j
public class TransactionProducer {

    @Resource
    private RocketMQTemplate rocketMQTemplate;

    public void produce() {
        Message<String> message = new Message<>();
        message.setId(UUID.randomUUID().toString());
        message.setContent("transaction message");
        log.info("========sending message=========");
        rocketMQTemplate.sendMessageInTransaction("tx-group", "topic-tx", MessageBuilder.withPayload(message).build(), null);
        log.info("========finish send =========");
    }
}

프로젝트 를 시작 하면 콘 솔 에서 다음 과 같은 출력 을 볼 수 있 습 니 다.
 ========sending message=========
 ============== executeLocalTransaction
 ========finish send =========
 ============== checkLocalTransaction
 topic-tx received message: Message(id=168486dd-0814-4060-ace1-5a55449b3f72, content=transaction message)

좋은 웹페이지 즐겨찾기