Skip to main content

Streams

Starting with version 2.0.1 keuss offers a storage backend that offers capabilities beyond job queues: in a job queue each element in the queue can be consumed by exacty one consumer; this backend extends this to several consumers, although the set of potential consumers must be fixed and known at insertion time. You can read in detail about this at stream-mongo backend

Queeus backed by stream-mongo can be managed as regular job queues at keuss, but the extra, stream features are only available through REST and STOMP APIs

Streams in REST API​

The extra details are specified via querystring parameters:

  • groups: set of potential consumer groups, in the insert operations
  • group: consumer group to use, in get, reserve, commit and rollback operations

Insert in queue​

Just specify the set of possible consumer groups for the element, as a comma-separated string:

$ curl -utest1:test1 \
-X PUT \
-H 'content-type: text/plain' \
--data-bin 'test test test' \
-H 'x-ks-hdr-header-1: val1' \
http://localhost:3444/q/ns1/test_queue_42?delay=3?groups=GR1,GR2,GR3
info

Different elements pushed in the same queue can have different 'groups'

Get from queue​

Just specify the consumer group as group:

$ curl -i -utest1:test1 http://localhost:3444/q/ns1/test_queue_42?group=GR2

Reserve from queue​

Just specify the consumer group as group:

$ curl -i -utest1:test1 http://localhost:3444/q/ns1/test_queue_42?group=GR2&reserve=true

Commit in queue​

Just specify the consumer group as group. It is important to specify the same value specified in the reserve:

curl -i -X PATCH http://localhost:3444/q/ns1/test_queue_42/commit/6322ed6caf9be003dcfaaaae?group=GR2

Rollback in queue​

Just specify the consumer group as group. It is important to specify the same value specified in the reserve:

curl -i -X PATCH http://localhost:3444/q/ns1/test_queue_42/rollback/6322ed6caf9be003dcfaaaae?group=GR2&delay=5000

Streams in STOMP API​

The extra details are specified via extra headers:

  • x-ks-groups: set of potential consumer groups, in the insert operations
  • x-ks-group: consumer group to use, in get, reserve, commit and rollback operations

In commit and rollback operations it is important to specify the same value of x-ks-group specified in the reserve: