<p>I would like to implement the approach explained in the book "The tao of microservices" using kubernetes and Istio. In other words, I would like that microservices communicate to each other with pattern matched queue messages and still I use the routing abilities of Istio to send i.e. 5% of messages to a new microservice (Canari deployments). </p>

<p>I read in <a href="https://www.linkedin.com/pulse/kubernetes-exploring-istio-event-driven-architectures-todd-kaplinger/" rel="nofollow noreferrer">a rather old article</a> that Istio does not support queue routing at the moment, but I'm wondering about the state of it now.</p>

<p>Does anyone has an example that implements this solution with Istio/queue topics? i.e. a message with the following routing keys </p>

<pre><code>store:save
kind:entity
</code></pre>

<p>is rerouted to a microservice which registers itself as accepting </p>

<pre><code>store:*
kind:entity
</code></pre>

<p>This is more of an architecture advice question.</p>

<p>For this pattern, you are probably better off using a message broker like <a href="https://www.rabbitmq.com/" rel="nofollow noreferrer">RabbitMQ</a> or <a href="https://kafka.apache.org/" rel="nofollow noreferrer">Kafka</a>, or an event bus (or something else).</p>

<p>Essentially, you would have services behind Istio that subscribe to certain message topics (Being published somewhere else which could be another service). </p>

<p>This way, for example, you could have something like <code>(service 1, queue1/topic1)</code>, <code>(service2, queue2/topic2)</code>. Then on Istio, if you separating Andriod and iOS traffic, you would have a rule that sends all the traffic for Android to <code>(service 1, queue1/topic1)</code> and all the traffic for iOS to <code>(service2, queue2/topic2)</code>. Or you could do 80% of the traffic to <code>(service 1, queue1/topic1)</code> and 20% of the traffic to <code>(service2, queue2/topic2)</code></p>

<p>You could run your message broker in Kubernetes or outside Kubernetes, depending on how you want to architect your solution.</p>

<p>Hope it helps!</p>
