tyrus
tyrus copied to clipboard
Tyrus should be able to broadcast over a farm using JMS of other similar technology
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]