@@ -26,16 +26,23 @@ class PubSubQueue extends Queue implements QueueContract
26
26
*/
27
27
protected $ default ;
28
28
29
+ /**
30
+ * PubSub config
31
+ */
32
+ protected $ config ;
33
+
34
+
29
35
/**
30
36
* Create a new GCP PubSub instance.
31
37
*
32
38
* @param \Google\Cloud\PubSub\PubSubClient $pubsub
33
39
* @param string $default
34
40
*/
35
- public function __construct (PubSubClient $ pubsub , $ default )
41
+ public function __construct (PubSubClient $ pubsub , $ default, $ config )
36
42
{
37
43
$ this ->pubsub = $ pubsub ;
38
44
$ this ->default = $ default ;
45
+ $ this ->config = $ config ;
39
46
}
40
47
41
48
/**
@@ -47,7 +54,7 @@ public function __construct(PubSubClient $pubsub, $default)
47
54
*
48
55
* @return int
49
56
*/
50
- public function size ($ queue = null )
57
+ public function size ($ subscriber = null )
51
58
{
52
59
return 0 ;
53
60
}
@@ -61,9 +68,9 @@ public function size($queue = null)
61
68
*
62
69
* @return mixed
63
70
*/
64
- public function push ($ job , $ data = '' , $ queue = null )
71
+ public function push ($ job , $ data = '' , $ subscriber = null )
65
72
{
66
- return $ this ->pushRaw ($ this ->createPayload ($ job , $ this -> getQueue ( $ queue ), $ data ), $ queue );
73
+ return $ this ->pushRaw ($ this ->createPayload ($ job , $ data ), $ subscriber );
67
74
}
68
75
69
76
/**
@@ -75,9 +82,9 @@ public function push($job, $data = '', $queue = null)
75
82
*
76
83
* @return array
77
84
*/
78
- public function pushRaw ($ payload , $ queue = null , array $ options = [])
85
+ public function pushRaw ($ payload , $ subscriber = null , array $ options = [])
79
86
{
80
- $ topic = $ this ->getTopic ($ queue , true );
87
+ $ topic = $ this ->getTopic ($ subscriber , true );
81
88
82
89
$ this ->subscribeToTopic ($ topic );
83
90
@@ -100,34 +107,34 @@ public function pushRaw($payload, $queue = null, array $options = [])
100
107
* @param \DateTimeInterface|\DateInterval|int $delay
101
108
* @param string|object $job
102
109
* @param mixed $data
103
- * @param string $queue
110
+ * @param string $subscriber
104
111
*
105
112
* @return mixed
106
113
*/
107
- public function later ($ delay , $ job , $ data = '' , $ queue = null )
114
+ public function later ($ delay , $ job , $ data = '' , $ subscriber = null )
108
115
{
109
116
return $ this ->pushRaw (
110
- $ this ->createPayload ($ job , $ this -> getQueue ( $ queue ), $ data ),
111
- $ queue ,
117
+ $ this ->createPayload ($ job , $ data ),
118
+ $ subscriber ,
112
119
['available_at ' => $ this ->availableAt ($ delay )]
113
120
);
114
121
}
115
122
116
123
/**
117
124
* Pop the next job off of the queue.
118
125
*
119
- * @param string $queue
126
+ * @param string $subscriber
120
127
* @return \Illuminate\Contracts\Queue\Job|null
121
128
*/
122
- public function pop ($ queue = null )
129
+ public function pop ($ subscriber = null )
123
130
{
124
- $ topic = $ this ->getTopic ($ this ->getQueue ($ queue ));
131
+ $ topic = $ this ->getTopic ($ this ->getQueue ($ subscriber ));
125
132
126
133
if (! $ topic ->exists ()) {
127
134
return ;
128
135
}
129
136
130
- $ subscription = $ topic ->subscription ($ this ->getSubscriberName ());
137
+ $ subscription = $ topic ->subscription ($ this ->getSubscriberName ($ subscriber ));
131
138
$ messages = $ subscription ->pull ([
132
139
'returnImmediately ' => true ,
133
140
'maxMessages ' => 1 ,
@@ -139,7 +146,7 @@ public function pop($queue = null)
139
146
$ this ,
140
147
$ messages [0 ],
141
148
$ this ->connectionName ,
142
- $ this ->getQueue ($ queue )
149
+ $ this ->getQueue ($ subscriber )
143
150
);
144
151
}
145
152
}
@@ -176,7 +183,7 @@ public function bulk($jobs, $data = '', $queue = null)
176
183
*/
177
184
public function acknowledge (Message $ message , $ queue = null )
178
185
{
179
- $ subscription = $ this ->getTopic ($ this ->getQueue ($ queue ))->subscription ($ this ->getSubscriberName ());
186
+ $ subscription = $ this ->getTopic ($ this ->getQueue ($ queue ))->subscription ($ this ->getSubscriberName ($ queue ));
180
187
$ subscription ->acknowledge ($ message );
181
188
}
182
189
@@ -191,7 +198,7 @@ public function acknowledge(Message $message, $queue = null)
191
198
public function acknowledgeAndPublish (Message $ message , $ queue = null , $ options = [], $ delay = 0 )
192
199
{
193
200
$ topic = $ this ->getTopic ($ this ->getQueue ($ queue ));
194
- $ subscription = $ topic ->subscription ($ this ->getSubscriberName ());
201
+ $ subscription = $ topic ->subscription ($ this ->getSubscriberName ($ queue ));
195
202
196
203
$ subscription ->acknowledge ($ message );
197
204
@@ -215,9 +222,9 @@ public function acknowledgeAndPublish(Message $message, $queue = null, $options
215
222
*
216
223
* @throws \Illuminate\Queue\InvalidPayloadException
217
224
*/
218
- protected function createPayload ($ job , $ queue , $ data = '' )
225
+ protected function createPayload ($ job , $ data = '' )
219
226
{
220
- $ payload = parent ::createPayload ($ job , $ this -> getQueue ( $ queue ), $ data );
227
+ $ payload = parent ::createPayload ($ job , $ data );
221
228
222
229
return base64_encode ($ payload );
223
230
}
@@ -230,9 +237,9 @@ protected function createPayload($job, $queue, $data = '')
230
237
* @param mixed $data
231
238
* @return array
232
239
*/
233
- protected function createPayloadArray ($ job , $ queue , $ data = '' )
240
+ protected function createPayloadArray ($ job , $ data = '' )
234
241
{
235
- return array_merge (parent ::createPayloadArray ($ job , $ this -> getQueue ( $ queue ), $ data ), [
242
+ return array_merge (parent ::createPayloadArray ($ job , $ data ), [
236
243
'id ' => $ this ->getRandomId (),
237
244
]);
238
245
}
@@ -267,7 +274,6 @@ public function getTopic($queue, $create = false)
267
274
public function subscribeToTopic (Topic $ topic )
268
275
{
269
276
$ subscription = $ topic ->subscription ($ this ->getSubscriberName ());
270
-
271
277
if (! $ subscription ->exists ()) {
272
278
$ subscription = $ topic ->subscribe ($ this ->getSubscriberName ());
273
279
}
@@ -282,8 +288,11 @@ public function subscribeToTopic(Topic $topic)
282
288
*
283
289
* @return string
284
290
*/
285
- public function getSubscriberName ()
291
+ public function getSubscriberName ($ queue = null )
286
292
{
293
+ if ($ this ->config && $ this ->config ['subscribers ' ] && $ queue && isset ($ this ->config ['subscribers ' ][$ queue ])) {
294
+ return $ this ->config ['subscribers ' ][$ queue ];
295
+ }
287
296
return 'subscriber ' ;
288
297
}
289
298
0 commit comments