2013-05-29 21 views
2

我有一個消息驅動的EJB,它接收來自HornetQ(2.1.13)JMS隊列的消息。有問題的應用程序運行在JBoss 7.1上。我知道我可以在服務器上配置此,使用XML,像這樣:HornetQ JMS:在Java代碼中配置max-delivery-attempts

<max-delivery-attempts>3</max-delivery-attempts> 

我爲什麼不考慮使用這種方式的原因是因爲我們進行一些邏輯,如果這是最後一次嘗試(即嘗試號碼3),所以我寧願不把這個配置放在幾個地方。

有問題的代碼是從JBoss 4升級而來的,其中可以像下面那樣配置最大傳送嘗試次數。但是,這是JBoss 4(不是HornetQ)中使用的JMS實現的非常具體的配置。

@MessageDriven(name = "SomeMessageBean", activationConfig = { 
    @ActivationConfigProperty(propertyName = "dLQMaxResent", propertyValue = "3") 
}) 

有HornetQ在任何方式直接在驅動Bean消息的Java代碼(優選與註釋)中設置的屬性<max-delivery-attempts>?或者甚至有JMS的方式來查明它是否是最後一次重發(意味着我根本不必關心數字)?

回答

3

有了hornetq,你必須在地址設置中指定它。所以你不會在bean上指定它。您將在隊列級別指定它。

這裏這可能DOC會給你一個更好的主意:

http://docs.jboss.org/hornetq/2.3.0.Final/docs/user-manual/html/queue-attributes.html#queue-attributes.address-settings

(我指着2.3.0 DOC但這是相同的,因爲HornetQ的的第一個版本)

+0

是你對此100%肯定?這意味着JBoss 4和HornetQ中的JMS實現之間存在根本的區別?我實際上對於使用JMS的工作非常新,所以我真的不知道。 – Magnilex

+1

我是:)我是HornetQ的項目負責人。 我們不想強制在每個MDB上設置這些設置。這是代理的屬性,而不是資源適配器。 看看我發給你的鏈接。這是做到這一點的方法.. 而HornetQ是一個消息傳遞提供商的新實現方式,比Jboss MQ更好 –

+0

我認爲你是一個可信賴的資源。 :)在我發佈問題之前,我實際上已經閱讀了您鏈接的部分。我想這就是我問這個問題的原因,因爲我只找到了在隊列級別做這件事的方法。無論如何,非常感謝。 – Magnilex