解决AMQP协议兼容性难题:amqp-proxy让OpenStack消息通信更简单
【免费下载链接】amqp-proxyA new AMQP protocol proxy architecture model, based on which Apache Pulsar can better support amqp protocol messages from terminals such as rabbitmq-client, openstack oslo-messaging client.项目地址: https://gitcode.com/openeuler/amqp-proxy
前往项目官网免费下载:https://ar.openeuler.org/ar/
在云计算和分布式系统中,消息通信的兼容性一直是开发者面临的一大挑战。openEuler/amqp-proxy作为一款创新的AMQP协议代理架构模型,基于Apache Pulsar构建,能够帮助OpenStack等系统更好地支持来自rabbitmq-client、openstack oslo-messaging client等终端的AMQP协议消息,彻底解决不同消息客户端之间的通信障碍。
为什么需要amqp-proxy?
在复杂的分布式系统环境中,不同组件往往采用不同的消息协议,这给系统集成带来了诸多不便。特别是在OpenStack等大型项目中,消息通信的稳定性和兼容性直接影响整个系统的运行效率。amqp-proxy的出现,正是为了打破这种协议壁垒,让Apache Pulsar能够无缝对接各种AMQP协议客户端,实现消息的高效传递和处理。
核心优势:让消息通信更简单高效 🚀
- 协议兼容:完美支持rabbitmq-client、openstack oslo-messaging client等终端的AMQP协议消息。
- 架构创新:基于Apache Pulsar构建的新型代理架构,提供稳定可靠的消息转发能力。
- 易于集成:简单的配置即可将amqp-proxy集成到现有系统中,无需大规模修改代码。
快速上手:amqp-proxy安装与配置指南
下载Pulsar
首先,需要下载Pulsar 2.7.2安装包并解压。下载地址为:https://github.com/streamnative/pulsar/releases/download/v2.7.1/apache-pulsar-2.7.1-bin.tar.gz。
下载并构建amqp-proxy插件
- 从代码仓库克隆项目到本地:
git clone https://gitcode.com/openeuler/amqp-proxy.git cd aop- 编译打包:
mvn clean install -DskipTests- nar包可以从如下位置获取到:
./amqp-impl/target/pulsar-protocol-handler-amqp-${version}.nar配置参数详解
amqp-proxy提供了丰富的配置参数,以满足不同场景的需求。以下是一些常用的配置项:
| Name | Description | Default |
|---|---|---|
| amqpTenant | AMQP on pulsar broker tenant | public |
| amqpListeners | AMQP service port | amqp://127.0.0.1:5672 |
| amqpMaxNoOfChannels | The maximum number of channels which can exist concurrently on a connection | 64 |
| amqpMaxFrameSize | The maximum frame size on a connection | 4194304 (4MB) |
| amqpMaxMessageSize | The maximum message size | 4194304 (4MB) |
配置amqp-proxy插件
- 插件配置: 需要配置“messagingProtocols”和“protocolHandlerDirectory”两个参数,messagingProtocols的值为amqp,protocolHandlerDirectory默认值为“./protocols”,该配置指向插件位置,运行前需要将nar文件上传到当前配置的文件夹下。
示例:
messagingProtocols=amqp protocolHandlerDirectory=./protocols- 配置AMQP SERVICE LISTENERS: 示例:
amqpListeners=amqp://127.0.0.1:5672 advertisedAddress=127.0.0.1使用说明:启动服务与测试
启动服务
以standalone模式启动pulsar服务:
$PULSAR_HOME/bin/pulsar standalone使用rabbitmq客户端进行测试
在项目中添加RabbitMQ客户端依赖:
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.8.0</version> </dependency>以下是使用Java代码进行测试的示例:
// create connection ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setVirtualHost("vhost1"); connectionFactory.setHost("127.0.0.1"); connectionFactory.setPort(5672); Connection connection = connectionFactory.newConnection(); Channel channel = connection.createChannel(); String exchange = "ex"; String queue = "qu"; // exchage declare channel.exchangeDeclare(exchange, BuiltinExchangeType.FANOUT, true, false, false, null); // queue declare and bind channel.queueDeclare(queue, true, false, false, null); channel.queueBind(queue, exchange, ""); // publish some messages for (int i = 0; i < 100; i++) { channel.basicPublish(exchange, "", null, ("hello - " + i).getBytes()); } // consume messages CountDownLatch countDownLatch = new CountDownLatch(100); channel.basicConsume(queue, true, new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { System.out.println("receive msg: " + new String(body)); countDownLatch.countDown(); } }); countDownLatch.await(); // release resource channel.close(); connection.close();参与贡献:一起完善amqp-proxy
amqp-proxy是一个开源项目,欢迎广大开发者参与贡献:
- Fork本仓库
- 新建Feat_xxx分支
- 提交代码
- 新建Pull Request
通过大家的共同努力,让amqp-proxy能够更好地满足不同场景下的消息通信需求,为开源社区贡献力量。
amqp-proxy,让AMQP协议兼容性难题成为过去,让OpenStack消息通信变得前所未有的简单!如果你正在为消息协议兼容性问题烦恼,不妨试试amqp-proxy,相信它会给你带来惊喜。
【免费下载链接】amqp-proxyA new AMQP protocol proxy architecture model, based on which Apache Pulsar can better support amqp protocol messages from terminals such as rabbitmq-client, openstack oslo-messaging client.项目地址: https://gitcode.com/openeuler/amqp-proxy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考