Skip to content

Commit dae2814

Browse files
committed
Allow dynamic routing key
1 parent 519819d commit dae2814

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/why/pubsub/amqp/Publisher.hx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,21 @@ class Publisher<Message> implements why.pubsub.Publisher<Message> {
2222

2323
public function publish(message:Message):Promise<Noise> {
2424
var buffer = config.serialize(message).toBuffer();
25-
return Promise.ofJsPromise(channel.publish(config.exchange, config.routingKey, buffer)).noise();
25+
var routingKey = config.routingKey(message);
26+
return Promise.ofJsPromise(channel.publish(config.exchange, routingKey, buffer)).noise();
2627
}
2728
}
2829

2930
typedef PublisherConfig<Message> = {
3031
final exchange:String;
31-
final routingKey:String;
32+
final routingKey:RoutingKey<Message>;
3233
final serialize:Message->Chunk;
34+
}
35+
36+
@:callable
37+
abstract RoutingKey<Message>(Message->String) from Message->String to Message->String {
38+
@:from
39+
public static inline function ofString<Message>(v:String):RoutingKey<Message> {
40+
return _ -> v;
41+
}
3342
}

0 commit comments

Comments
 (0)