tyrus icon indicating copy to clipboard operation
tyrus copied to clipboard

Tyrus should be able to broadcast over a farm using JMS of other similar technology

Open glassfishrobot opened this issue 11 years ago • 3 comments

It would make a look simpler if Tyrus contains features natively to support using JMS queue or similar technology such as coherence to support sending messages to multiple nodes in the farm:

@ServiceEndpoint(...) @TyrusCluster() @TyrusJMSQueue(... something to configure a suitable queue ... ) public class MyClusteringEndpoint { }

This would probably only come into play if you make use of the new broadcast method on TyrusSession:

((TyrusSession)peer).broadcast(message)

The implication here is that is we were to allow filtering on the broadcast...

((TyrusSession)peer).broadcast(message, Session::isOpen)

.... this would probably require an interface that could be serialisable:

public interface SerializablePredicate<T> extends Predicate<T>, Serializable { }

You would have to be careful to not allow anonymous inner classes in this case as it would end up trying to serialise the entire outer object. I am not sure Lambda would be dealt with this incase, I guess you would have to make sure it doesn't capture too much of the containing state. I would get the ObjectOutput stream would fail in these cases.

Affected Versions

[1.3.1]

glassfishrobot avatar Dec 04 '13 11:12 glassfishrobot