unit-testing - 在骆驼单元测试中的存根 jms 端点上设置 JMSMessageID
问题描述
我有一条正在测试的路线。我stub://jms:queue:whatever
用来发送/接收消息并扩展CamelTestSupport
我的测试类。我对具有使用幂等存储库的 bean 的路由之一遇到问题,该 bean 通过“消息 id”存储消息,它从交换中读取并存储 JMSMessageID 属性。
我遇到的问题是我无法找到一种方法来为在存根端点上发送的消息设置此属性。每次调用需要此道具的方法时,id 都会返回 null,我必须将其作为空指针处理。我可以这样做,但最干净的方法是在测试消息上设置标题。我includeSentJMSMessageId=true
在端点上尝试过,我尝试sendBodyAndHeader
在生产者上使用并传入"JMSMessageID", "ID: whatever"
参数,似乎不起作用?我读到驱动程序/连接工厂应该设置标题,但我不太熟悉如何/在哪里执行此操作。而且由于我使用的是存根端点,因此我没有在我的 uts 中创建任何代理/连接工厂。
解决方案
JMSMessageID 只能由提供者设置。尽管javax.jms.Message
有setJMSMessageId()
. 正如JavaDoc所述:
此方法供 JMS 提供者使用,仅用于在发送消息时设置此字段。客户端不能使用此消息来配置消息 ID。此方法是公共的,以允许 JMS 提供者在发送不是其自己的实现的消息时设置此字段。
推荐阅读
- unit-testing - 如何在 Jest 中模拟 AWS Amplify?
- python - 如何使用 paramiko 正确配置和关闭 SSH 会话
- c++ - dnn opencv c++'getMemoryShapes'断言失败
- c - 了解汇编语言如何将参数从一种方法传递到另一种方法
- php - 用户电子邮件验证
- arm - 带有 32mb IS25LQ032B 设备的嵌入式 ARM 项目上的 SPIFFS
- tensorflow - Keras 去掉最后一层的激活函数
- java - Android底部导航活动
- kubernetes - Kube2iam 是否不需要和/或 EKS 的一部分?
- android - Espresso:如何测试 ImageButton 的背景可绘制对象