Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 329792

Summary: Simple Queue Service
Product: z_Archived Reporter: Gunnar Wagenknecht <gunnar>
Component: gyrexAssignee: Gunnar Wagenknecht <gunnar>
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: P3 CC: andreas.mihm, peter.hermsdorf
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on:    
Bug Blocks: 329782    

Description Gunnar Wagenknecht CLA 2010-11-09 09:32:44 EST
We need a queue service in Gyrex which allows to create queues, submit messages to and retrieve messages from them. Together The service must not define any strong guarantees but must allow to cover implementations based on Amazon SQS,  OpenStack, RabbitMQ, etc. 

Thus, the API might be very rich but offer enough feature in order to support the following thing:

* declare queue
Ensures that a queue exists (creates it if necessary)

* publish message
Publishes a message (set of bytes)

* message consumer callback
Allows to add message consumers (callback interface that will receive one message at a time; actually returns a message consumer registration handle which can be used to remove a consumer callback)


A few notes:

Queue management is left to the actual queue service implementation which should likely expose it's own queue management interface.

No guarantees are given regarding message delivery/ordering other than the guarantees given by the underlying implementations.

The queue service is *not* a distributed event bus.
Comment 1 Gunnar Wagenknecht CLA 2010-11-09 09:33:57 EST
We should investigate RabbitMQ as a default implementation.
Comment 2 Gunnar Wagenknecht CLA 2011-01-15 15:18:11 EST
Another possible default implementation could be Kestrel (https://github.com/robey/kestrel).
Comment 3 Gunnar Wagenknecht CLA 2011-02-13 16:07:21 EST
I went ahead and implemented a simple queue service based on ZooKeeper. We already have it and it's actually one of the example ZooKeeper usages.

Committed to HEAD. However, I'll leave this bug open till the test suite is complete.

BTW, we now also have a dedicated server test application. This allows to run JUnit test entirely on a full server environment. Thus, there is no longer a need for re-initializing an environment manuall in test cases.
Comment 4 Gunnar Wagenknecht CLA 2011-02-14 05:08:05 EST
Peter, the last paragraph of the last comment is for you.
Comment 5 Gunnar Wagenknecht CLA 2011-04-14 15:07:54 EDT
Test suite complete.
Comment 6 Gunnar Wagenknecht CLA 2011-04-14 15:08:27 EDT
Fixed.