簡體   English   中英

Java生產者-消費者-多個消費者

[英]Producer-Consumer in Java - Multiple Consumers

我有一個具有多個使用者的Java生產者-消費者模型。 我在生產者和消費者之間傳遞了一個具有變量的對象,我們稱它為“名稱”。

現在,此名稱可以是A,B或C。如果值為A,則一個使用者將其從隊列中取出並對其進行處理。 如果值為B,則其他使用者將其從同一隊列中移出並執行其他操作。 如果值為C,則第三個使用者執行相同的操作。

我的問題是如何實現這一目標。 我當前的理論如下(使用偽代碼):

// This is code for each consumer
pull item off the queue
check if item.name is right for this consumer (A, B, or C)
if so, send it to consume()
else, put it back on the queue

這樣的事情會起作用,還是會對我的線程同步造成嚴重破壞? 如果它不起作用,我應該使用什么模型來實現呢?

最簡單的方法是在發布消息時定義消息標題。 然后,您可以有多個使用者,每個使用者都有唯一的MessageSelector,用於查找特定的消息頭。 這樣,只有正確的使用者才能收到消息,而如果不正確的使用者得到消息,您不必擔心會重新發布消息(這效率很低,並且在加載了很多消息的系統上效果不佳通過系統)。

http://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/prog_model.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM