请看下面的消息驱动程序Bean.

我们使用ActiveMQ作为消息代理,使用JBoss和相应的activemq-rar.rar资源适配器.

我想知道哪种行为是正确的?

@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/QUEUE1"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})

public class MDBean implements MessageListener {

    @Resource
    private MessageDrivenContext contextMD;

    public void onMessage(Message message) {
        try {
            message.clearProperties();
            message.setObjectProperty("newprop", "newprop");
        } catch (JMSException e) {
            e.printStackTrace();
        }
        contextMD.setRollbackOnly();
    }

}

推荐答案

你在新版本中看到的行为是正确的.相关变更通过AMQ-7464进行.简而言之,在消费期间对消息所做的更改应该反映在重新交付期间的消息中.

Java相关问答推荐

无法在Java中将hhmmss格式的时间解析为LocalTime

强制Mockito返回null而不是emtpy list

JUnit—如何模拟局部变量对象方法调用

XPages-在第二次点击按钮之前延迟

如何以干净的方式访问深度嵌套的对象S属性?

Java中如何根据Font.canDisplay方法对字符串进行分段

如何判断一个矩阵是否为有框矩阵?

不推荐使用的Environment.getExternalStorageDirectory().getAbsolutePath()返回的值不同于新的getExternalFilesDir(空)?

在Eclipse中数组的可空性

如何在一行中使用Dijkstra中的Java Stream

Domino Designer 14中的保存代理添加了重影库

一对多关系和ID生成

我可以在@Cacheable中使用枚举吗

FETCH类型设置为LAZY,但它仍会发送第二个请求

Quarkus:运行时出现EnumConstantNotPresentException

如何制作回文程序?

Java 21内置http客户端固定运营商线程

如何使用Hibernate v6.2构建NamingStrategy,以表名作为所有列的前缀?

如何正确使用java.time类?

放置在变量中的Java成员引用不相等