ActiveMQ实战篇之ActiveMQ实现request/reply模型(二)

本文介绍了ActiveMQ如何实现request/reply模型,通过在请求消息中设置correlation ID和JMSReplyTo属性,实现客户端与服务端的有效交互。当单个服务器处理能力不足时,可以轻松添加更多服务器以提高可用性和伸缩性,避免同一主机上资源争抢,提升系统效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActiveMQ实现request/reply模型


实现思路

这里写图片描述

首先,Client的Producer发出一个JMS message形式的request,request上附加了一些额外的属性:

  • correlation ID(用来和返回的correlation ID对比进行验证),
  • JMSReplyTo属性(放置jms message的destination,这样worker的Consumer获得jms message就能得到destination)

然后,Worker的consumer收到requset,处理request并用producer发出reply,destination就从requset的JMSReplyTo属性中得到

下面贴出Client和Server的代码:


Client

package com.tgb.activemq;

import java.util.UUID;

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerService;

public class Client implements MessageListener {
   
   
    private BrokerService broker;
    private final String brokerUrl = "tcp://localhost:61616";
    private Connection connection;
    private Session session;
    private Queue tempDest;
    private MessageProducer producer;
    private MessageConsumer consumer;

    private final String requestQueue = "requestQueue";

    public void start() throws Excepti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值