5.000.000 Messages per Day Handled by Oracle Service Bus 11g by Pavel Samolysov

image

Hello everyone! Let me share a story about how to build an enterprise service bus (ESB), which connects together a number of legacy application and a new-born centralized information system, and how Oracle Service Bus (OSB) can help handle up to 5.000.000 messages in a day ensuring guaranteed delivery.

Challenge

Every data change from a one application (a source) must be synchronized with another application (a destination) in the near real-time mode, batch processing is not a solution. So, the changes need to be captured and free to publish on a service bus. The following pattern works fine: when a user changes data in the source application, a trigger in an application database creates a record in an event table. Let’s name a record in the event table as a "event". A event is specified by an id; a changed entity type; an operation, such as to create, update or delete; a state, such as new, in process, successful processed, unsuccessful processed. Actual data can be retrieved from the database using an id and a changed entity type because there is a database view for each type of entities, the bus has a concern in. The OSB instance polls the events using the database adapter and selects a corresponding record from a database view. The content of the retrieved record is transformed to the canonical data model of the service bus, from zero till five messages are generated for one database record. The messages are put in a JMS-queue, and the corresponding records in the database marked with the "in process" flag.
In order to send messages into a destination application, there is the OSB proxy-service gets messages from the JMS-queue, transforms it from the canonical model to a destination format, and calls a web-service provided by the destination application. The proxy-service waits for a service response, retrieves a status of handling from this one and put the status into a statuses queue. The bus gets the status from the queue and updates a corresponding record in the event table of the source application database.
Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

Technorati Tags: SOA Community,Oracle SOA,Oracle BPM,OPN,Jürgen Kress

Advertisements

About Jürgen Kress
As a middleware expert Jürgen works at Oracle EMEA Alliances and Channels, responsible for Oracle’s EMEA Fusion Middleware partner business. He is the founder of the Oracle SOA & BPM and the WebLogic Partner Communities and the global Oracle Partner Advisory Councils. With more than 5000 members from all over the world the Middleware Partner Community is the most successful and active community at Oracle. Jürgen manages the community with monthly newsletters, webcasts and conferences. He hosts his annual Fusion Middleware Partner Community Forums and the Fusion Middleware Summer Camps, where more than 200 partners get product updates, roadmap insights and hands-on trainings. Supplemented by many web 2.0 tools like twitter, discussion forums, online communities, blogs and wikis. For the SOA & Cloud Symposium by Thomas Erl, Jürgen is a member of the steering board. He is also a frequent speaker at conferences like the SOA & BPM Integration Days, JAX, UKOUG, OUGN, or OOP.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: