2016-09-23 3 views
0

myprojectでクライアントサーバートポロジを使用していて、ハローキャストサーバーでいくつかの操作を実行しようとしています。クラスタ環境のHazelcast IQueueは、すべてのメンバー上のアイテムを受け取ります

私はリスナーを登録していると私はクラスタモードでhazelcastを実行しています

私hazelcastサーバー上の
IQueue<SerializedBean> queue = HzUtil.getInstance().getQueue("myqueue"); 

boolean status = queue.offer(serializedBean,<timeoutvalue>,TimeUnit.MILLISECONDS); 

以下のように私は、クライアントからの私hazelcastキューにシリアライズされた豆を入れています。

<hz:queue name="myqueue"> 
    <hz:item-listeners> 
     <hz:item-listener implementation="myqueueImpl" include-value="true"/> 
    </hz:item-listeners> 
</hz:queue> 


    public class MyqueueImpl implements ItemListener<SerializedBean> { 

     public void itemAdded(ItemEvent<SerializedBean> inputMessage) { 
      System.out.println("Item added to the queue "); 
      //sometask 
     } 

    public void itemRemoved(ItemEvent<SerializedBean> removedItem) { 

      System.out.println("Item removed from the queue "); 
     } 
} 

問題:キューアイテムを受信して​​ピックアップし、クラスタのメンバーの両方で実行されていることを私が観察したもの

。アイテムをクラスタメンバーのいずれかで一度だけ取り出せます。私が紛失しているものを教えてください

+0

誰かがこれにいくつかの光を投げることができますか? – Nitin

答えて

0

ItemListenerはHazelcastの他のリスナーとまったく同じように動作します(IMapのローカルEntryListenerを除く)。あなたは、私が理解するところでは、投票のような解決策を探しており、ItemListenerを使用して達成することはできません。 1つのノードでのみ値を取得する方法に関するドキュメントを参照してください:http://docs.hazelcast.org/docs/3.7/manual/html-single/index.html#getting-a-queue-and-putting-items

関連する問題