UNPKG

2.28 kBtext/coffeescriptView Raw
1
2# Abstraction of the concrete message queue system used
3# Examples: AMQP, MQTT
4class MessagingSystem
5 constructor: (address, options) ->
6
7 ## Broker connection management
8 connect: (callback) ->
9 throw new Error 'Not Implemented'
10 disconnect: (callback) ->
11 throw new Error 'Not Implemented'
12
13 ## Manipulating queues
14 # @type: inqueue|outqueue
15 # @options:
16 # persistent: true|false # if broker should persist the queue or not
17 createQueue: (type, queueName, options, callback) ->
18 throw new Error 'Not Implemented'
19 removeQueue: (type, queueName, callback) ->
20 throw new Error 'Not Implemented'
21
22 ## Sending/Receiving messages
23 # queueName must be created beforehand, and be of correct type
24 sendTo: (type, name, message, callback) ->
25 throw new Error 'Not Implemented'
26
27 # handler must call ackMessage() on succesful processing of a message
28 subscribeToQueue: (queueName, handler, callback) ->
29 throw new Error 'Not Implemented'
30
31 ## ACK/NACK messages
32 ackMessage: (message) ->
33 throw new Error 'Not Implemented'
34 nackMessage: (message) ->
35 throw new Error 'Not Implemented'
36
37class MessagingClient extends MessagingSystem
38
39 # Participant registration
40 registerParticipant: (part) ->
41 throw new Error 'Not Implemented'
42
43exports.MessagingClient = MessagingClient
44
45class MessageBroker extends MessagingSystem
46
47 # Manipulating queue bindings
48 # Binding object:
49 # {
50 # type: 'roundrobin'|'pubsub'
51 # src: 'source queue'
52 # tgt: 'target queue'
53 # $type: { 'type-specific-bar': 'foo' }
54 # deadletter: 'queue name' # only for roundrobin
55 # }
56 # Types:
57 # pubsub: Messages are delivered to all consumers on queue. (default)
58 # ack/nack does not impact sending
59 # roundrobin: Messages are delivered to one consumer on queue.
60 # If not acked or nacked, put to deadletter
61 addBinding: (binding, callback) ->
62 throw new Error 'Not Implemented'
63 removeBinding: (binding, callback) ->
64 throw new Error 'Not Implemented'
65 # @callback err, [Binding, Binding, ..]
66 listBindings: (callback) ->
67 throw new Error 'Not Implemented'
68
69 # Participant registration
70 subscribeParticipantChange: (handler) ->
71 throw new Error 'Not Implemented'
72
73exports.MessageBroker = MessageBroker