activemqを使用してejb mdbで作業しています。 iamがキューからメッセージを読み取り、データをデータベースに保存することができます。 mdbはキューからメッセージを取り出し、一方のメッセージは部分的にデータベースに保存し、別のメッセージが処理されます。 私はデータベースにメッセージを1つずつ保存したいのですが、助けてくださいJavaでMDBとactivemqを使用してシリアルプロセスを作成する方法
0
A
答えて
1
EJBは分散処理を支援します。 MDBは、バインドされているキューまたはトピックに到着した複数のメッセージを処理することにより、システムの規模を拡張するのに役立ちます。
プール内にいくつのBeanを置いてメッセージを消費するかという設定があります。 1に設定すると、期待どおりに動作します(1つのアプリケーションサーバーがあると仮定します)。
しかし、実際にメッセージを1つずつ処理したい場合は、MDBを使用することは意味がありません。 MessageListenerを実装するプレーンなJavaクラスを書くことができます。しかし、これによりプロセス全体が遅くなり、メッセージがキューに蓄積される可能性があります。
0
@Amitの説明は正しいです。maxSessionを1に設定すると、動作は期待通りになります。 これは単一の領事領事を受理する最もクリーンな方法です。
あなたの必要性は、時間あたりわずか1 MDBを実行することはありませんが、EJB3.1でシングルトンの存在を使用することができるよりも唯一、一定時間内に1つのスレッドのみのコード(たとえば、DB更新)を実行することを確認する場合。 あなたのコードは次のようになります:EJB特定からこの、しかし落胆をachiveする
@MessageDriven(...)
public class MessageReceiver implements MessageListener {
@EJB(name = "DBSingleton")
private DBSingleton dbSingleton;
public void onMessage(Message jmsMessage) {
//here a lot of, time consuming operations
User u; //get it from jmsMessage
dbSingleton.updateUser(u);
}
}
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Singleton
public class DBSingleton {
@EJB(name = "UserService")
private UserService userService;
@Lock(LockType.READ)
public User getUsers() {
return userService.getUser();
}
@Lock(LockType.WRITE)
public void updateUser(User user) {
userService.updateUser(user);
}
}
UserService uses EntityManager to persist in DB (directly or indirectly through a DAO class)
最後の道を、同期ブロックを使用することです。
参照してください: Concurrency in Message Driven Bean - Thread safe Java EE5 vs. EE6
関連する問題
- 1. .MDBを作成してPythonを使用してCSVをインポートする方法
- 2. ActiveMQでワイルドカードを使用して階層トピックを作成する
- 3. ActiveMQでMaxReconnectAttempsを使用する方法
- 4. javaを使用して.docファイルを作成する方法は?
- 5. jaxbを使用してJavaオブジェクトを作成する方法
- 6. Javaを使用してデータフロー図を作成する方法
- 7. Java EEを使用してユーザーログを作成する方法は?
- 8. Javaを使用してXMLファイルを作成する方法は?
- 9. Javaを使用してMySQLログを作成する方法
- 10. Javaを使用してJSONドキュメントを作成する方法は?
- 11. VBAとADOを使用してMDBテーブルを作成すると、自動的にUUIDを主キーとして使用する方法は?
- 12. webservicesとMySQLを使用してJavaバックエンドを作成する方法は?
- 13. JSONObjectを使用してJavaで正しいJsonArrayを作成する方法
- 14. Java EEでMDBを使用したパイプとフィルタパターン
- 15. javaバネでActiveMqを使用して複数のプロジェクトの共通ブローカーを作成する
- 16. Javaでループを使用してFizzBuzzを作成する方法
- 17. scalaでJava APIを使用してelasticsearch集計を作成する方法
- 18. Spring/Javaを使用してプログラムでサブドメインを作成する方法は?
- 19. Javaでwindows shell32.dllを使用してディレクトリショートカットを作成する方法は?
- 20. 有効なSecurityManagerをJavaで使用してnewInstanceを作成する方法
- 21. javaを使用して圧縮でthumbs.dbファイルを作成する方法
- 22. JavaでGoogle S2ライブラリを使用してポリゴンを作成する方法
- 23. Javaクラスを使用してCassandraでKEYSPACEを作成する方法
- 24. AzureでJavaを使用してHDIクラスタを作成/削除する方法
- 25. Activemqコンシューマー・リスナーを構成する方法(Java)
- 26. JavaでWebサービスを作成する方法(Eclipseを使用)
- 27. サーブレットを使用してJSONObjectを使用してJavaで正しいJsonArrayを作成する方法
- 28. PHPとMySQLを使用してユーザープロファイルを作成する方法
- 29. JMenuItemとActionListenerを使用してJButtonを作成する方法
- 30. DNNとC#を使用してサイトマップを作成する方法