- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有没有人有在独立 junit 测试中使用 Apache Qpid 的示例。
理想情况下,我希望能够动态创建一个队列,我可以在测试中放置/获取消息。所以我没有在我的测试中测试 QPid,我将为此使用集成测试,但是对于测试处理消息的方法非常有用,而必须模拟服务负载。
最佳答案
这是我用于 QPID 0.30 的设置方法(我在 Spock 测试中使用它,但应该可以毫无问题地移植到 Junit 的 Java)。这支持 SSL 连接、HTTP 管理,并且仅使用内存启动。启动时间为亚秒级。与出于相同目的使用 ActiveMQ 相比,QPID 的配置很笨拙,但 QPID 符合 AMQP 标准,并允许对 AMQP 客户端进行平滑、中立的测试(显然,交换的使用不能模仿 RabbitMQ 的实现,但对于基本目的来说已经足够了)
首先,我创建了一个最小的 test-config.json,并将其放入资源文件夹中:
{
"name": "${broker.name}",
"modelVersion": "2.0",
"defaultVirtualHost" : "default",
"authenticationproviders" : [ {
"name" : "passwordFile",
"type" : "PlainPasswordFile",
"path" : "${qpid.home_dir}${file.separator}etc${file.separator}passwd",
"preferencesproviders" : [{
"name": "fileSystemPreferences",
"type": "FileSystemPreferences",
"path" : "${qpid.work_dir}${file.separator}user.preferences.json"
}]
} ],
"ports" : [ {
"name" : "AMQP",
"port" : "${qpid.amqp_port}",
"authenticationProvider" : "passwordFile",
"keyStore" : "default",
"protocols": ["AMQP_0_10", "AMQP_0_8", "AMQP_0_9", "AMQP_0_9_1" ],
"transports" : [ "SSL" ]
}, {
"name" : "HTTP",
"port" : "${qpid.http_port}",
"authenticationProvider" : "passwordFile",
"protocols" : [ "HTTP" ]
}],
"virtualhostnodes" : [ {
"name" : "default",
"type" : "JSON",
"virtualHostInitialConfiguration" : "{ \"type\" : \"Memory\" }"
} ],
"plugins" : [ {
"type" : "MANAGEMENT-HTTP",
"name" : "httpManagement"
}],
"keystores" : [ {
"name" : "default",
"password" : "password",
"path": "${qpid.home_dir}${file.separator}keystore.jks"
}]
}
我我还需要为本地主机创建一个 keystore.jks 文件,因为 QPID 代理和 RabbitMQ 客户端不喜欢通过未加密的 channel 进行通信。我还在“integTest/resources/etc”中添加了一个名为“passwd”的文件,其中包含以下内容:
guest :密码
这是单元测试设置中的代码:
def tmpFolder = Files.createTempDir()
Broker broker
def amqpPort = PortFinder.findFreePort()
def httpPort = PortFinder.findFreePort()
def qpidHomeDir = 'src/integTest/resources/'
def configFileName = "/test-config.json"
def setup() {
broker = new Broker();
def brokerOptions = new BrokerOptions()
File file = new File(qpidHomeDir)
String homePath = file.getAbsolutePath();
log.info(' qpid home dir=' + homePath)
log.info(' qpid work dir=' + tmpFolder.absolutePath)
brokerOptions.setConfigProperty('qpid.work_dir', tmpFolder.absolutePath);
brokerOptions.setConfigProperty('qpid.amqp_port',"${amqpPort}")
brokerOptions.setConfigProperty('qpid.http_port', "${httpPort}")
brokerOptions.setConfigProperty('qpid.home_dir', homePath);
brokerOptions.setInitialConfigurationLocation(homePath + configFileName)
broker.startup(brokerOptions)
log.info('broker started')
}
broker.shutdown()
从 Rabbit MQ 客户端建立 AMQP 连接:
ConnectionFactory factory = new ConnectionFactory();
factory.setUri("amqp://guest:password@localhost:${amqpPort}");
factory.useSslProtocol()
log.info('about to make connection')
def connection = factory.newConnection();
//get a channel for sending the "kickoff" message
def channel = connection.createChannel();
关于java - 独立 Apache Qpid (amqp) Junit 测试示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176043/
我对 qpid-proton-c 和 qpid-cpp 之间的区别感到困惑。谁能赐教一下? 最佳答案 proton 和 qpid-cpp 都是 Apache Qpid 旗下的项目,但它们的用途不同。
我已经在 sles11 sp2 X86_64 上安装了 qpid-0.22,代理工作正常。然后我安装了 qpid-python 客户端并设置了 env 变量。PYTHONPATH=/home/zdx/
Qpid Java 6.0.1 和 Qpid JMS 0.9.0 以及 Qpid Proton 有什么区别?我是 JMS 的新手,想用 Apache Qpid 实现简单的 JMS 应用程序。谁能给我提
是否可以使用qpid-config.json定义qpid中应存在哪些队列和主题。我正在使用 qpid 7.1.0。 我如何在配置文件中执行此操作? 最佳答案 Qpid Broker-J 有两个级别的配
当我运行 qpid-server.bat 时,出现以下错误: C:\qpid\qpid-0.24\java\broker\bin>qpid-server.bat War
我正在尝试使用 QPID 设置 SSL,但我在弄清楚如何设置证书时遇到了问题。我已经制作了一个证书数据库并向其中添加了一个自签名证书,如下所示: mkdir ${CERT_DIR} certutil
我正在尝试从源代码构建 Qpid Messaging API(C++,绑定(bind))。在 RHEL 上触发构建,并安装下面链接中提到的所有先决条件。 https://git-wip-us.apac
我目前正在研究如何使用 Qpid JMS (qpid-jms-client-0.11.1.jar) 连接到 Azure 服务总线。 我创建了一个演示 Java 应用程序 SimpleSenderRec
我一直在努力解决这个问题,现在需要一个不同的视角。我正在使用 spring 并合并了这个 spring boot 启动包,这样我就可以利用 AMQP 协议(protocol):amqp-10-jms-
我是 Qpid 新手,正在尝试设置环境。在阅读了大量文档后,我设法下载了 Apache Qpid 并让它在 localhost:8080 中运行 我还安装了maven、cmake。现在我尝试在 Ecl
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
我无法从我的 centos 虚拟机中卸载 qpid。 我试过以下:: -sudo yum 删除 qpid-cpp-server -sudo yum 删除 qpid-cpp-server 但它没有得到卸
我正在使用带有 QPID 的 JMS,并且想知道如果无法再访问代理,如何配置重新连接: try (Connection connection = jmsFactory.createConnection
Apache qpid-cpp messaging api 是否像 ActiveMQ 一样支持延迟传递消息? TextMessage message = session.createTextM
我正在做一个项目,我需要能够通过 Qpid 发送字节数组,但是 Variant 不知道什么是数组。有没有办法,我可以将字节数组转换成 Variant,比如 unit8 的 Variant::list
是否有任何选项可以在 Apache Qpid 中的消息级别设置路由 key 。我目前的做法是 在地址字符串中指定路由键。使用此目标地址创建生产者。 topic = (主题) context.looku
Spring 配置 MyService.java
我目前正在开发一个 JMS 项目,我已经创建了 2 个 key 和 2 个证书以及通过 Qpid 的 UI 创建的 TrustStorage、mytruststore。在我的 jndi.propert
这是我第一天使用 Apache Proton 和 Qpid(java-broker 版本 0.32),我需要一个简单的 Java 发送和接收示例(无 JMS)。通过摸索,我发现 Send.java 和
我正在使用 C++ 实现 Qpid 质子客户端。 Qpid 版本为 0.12.2。 我运行默认容器: proton::container(myHandler).run(); MyHandler 是这样
我是一名优秀的程序员,十分优秀!