At the moment in BAM, all the data received from data bridge are directly stored to the Cassandra. When a new stream creation message is received, that stream is automatically created and starts to listen to that stream automatically.
As a new feature we are going to re-use the InputTransportAdapter and InputMessageBuilder (currently used by CEP) to receive messages to BAM. The rationale is to unify the message receiving features in both CEP and BAM which will enable BAM to receive message from other transports such as JMS. One problem with this new feature is enabling the automatic stream creation with InputTransportAdapter and InputMessageBuilder. The user has to pre-configure the streams it is intended to be listened so that new message builders are created for each stream. The second problem is filtering the streams come to CEP and BAM. Some streams may be only required to be used by CEP but not BAM. The reason is keeping all the messages comes to CEP in Cassandra will waste the disk space. But there is no stream filtering mechanism either in CEP or BAM at the moment. The solution we have come up is as follows. 1. BAM is listening to both event builders and data bridge. 2. Event builders should be pre configured if the streams have to be received via event builders. 3. But still all the streams come to data bridge will be received by the data bridge listener. 4. When a new stream creation message is received either to event builder or to data bridge, they will notify it to our new lisetner. 5. There is a separate configuration stating what are the streams accepted by the BAM. If that configuration is "*", all the streams should be accepted. (should go to Cassandra) If there is a comma seperated list of streams, only those streams should go to Cassandra. If a set of streams stated after a "!" symbol, all the streams except those streams should go to Cassandra. 6. When a stream creation message is notified to a listener, that listener should create a stream in the Cassandra only if that stream is matching with the stream set stated in the config file. 7. Now the problem is receiving the same message from both event builder and the data bridge. Therefore when a stream creation is notified, the notifier (either event builder or the data bridge) is remembered by the listener. Only that notifier will be allowed to store events to the Cassandra using that stream. In other words, either event builder or the data bridge can store events using a unique stream. * Maninda Edirisooriya* Software Engineer *WSO2, Inc. *lean.enterprise.middleware. *Blog* : http://maninda.blogspot.com/ *Phone* : +94 777603226
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
