Hallo,
Ich habe ein MessageBean welches Nachrichten von einem Chat-Client erhält. Bis jetzt verarbeite ich die Nachrichten asynchron. Ich möchte das Verhalten aber ändern. Es sollen immer jeweils die Nachrichten zu einer SenderId(token) asynchron und alle anderen synchron verarbeitet werden.
Sagen wir mal wir haben 3 User. Von User 1 kommen zehn Nachrichten, von User 2 kommen fünf Nachrichten und von User 3 kommt eine Nachricht an. So sollen die Nachrichten von User 1 alle hintereinander(synchronized) verarbeitet werden. Parallel dazu sollen von User 2 alle hintereinander(synchronized) verarbeitet werden. Und die Nachricht von User 3 soll genauso parallel abgearbeitet werden.
Lässt sich das irgendwie bewerkstelligen?
Bis jetzt sieht das ganze so aus:
Mfg Akkie
Ich habe ein MessageBean welches Nachrichten von einem Chat-Client erhält. Bis jetzt verarbeite ich die Nachrichten asynchron. Ich möchte das Verhalten aber ändern. Es sollen immer jeweils die Nachrichten zu einer SenderId(token) asynchron und alle anderen synchron verarbeitet werden.
Sagen wir mal wir haben 3 User. Von User 1 kommen zehn Nachrichten, von User 2 kommen fünf Nachrichten und von User 3 kommt eine Nachricht an. So sollen die Nachrichten von User 1 alle hintereinander(synchronized) verarbeitet werden. Parallel dazu sollen von User 2 alle hintereinander(synchronized) verarbeitet werden. Und die Nachricht von User 3 soll genauso parallel abgearbeitet werden.
Lässt sich das irgendwie bewerkstelligen?
Bis jetzt sieht das ganze so aus:
Java:
synchronized(queue) {
queue.offer((TextMessage) msg);
TextMessage txtMsg = queue.poll();
MessageService msgService = new MessageService();
msgService.handleMessage(
this.getType(txtMsg),
this.getSenderId(txtMsg),
this.getRecipientId(txtMsg),
this.getText(txtMsg),
this.getForward(txtMsg)
);
}
Mfg Akkie