EnMasseProject / enmasse

EnMasse - Self-service messaging on Kubernetes and OpenShift
https://enmasseproject.github.io
Apache License 2.0
190 stars 87 forks source link

[Shared infra] Add support for all address types #4469

Open lulf opened 4 years ago

lulf commented 4 years ago

Description

Add support for all address types.

Tasklist

lulf commented 4 years ago

In the shared infra design doc, the ability to create 'transactional' queues and topics are indicated by an array of capabilities on the MessagingPlan:

kind: MessagingPlan
spec:
  capabilities:
  - transactional

In addition to enforcing this at the messaging plan, I wonder if it should be possible to specify this property on the MessagingTenant as well. This allows making use of transactional addresses without having to create a MessagingPlan. It could be exposed like this:

kind: MessagingTenant
spec:
  # For user setting the capability
  capabilities:
  - transactional
status:
  # The capabilities as inferred by the operator, either based on plan or on the setting in the spec.
  capabilities:
  - transactional

Question 1: Should it be possible to override the plan in the MessagingTenant ?

If a MessagingTenant has the transactional capability, the MessagingAddress controller can:

I think the simplest way to implement this in the operator is to create this link route when the first address is created belonging to a tenant with transactional capability is created. Once that address has been scheduled, the operator can then know what parameters the linkRoute should have.

Question 2: Does this sufficiently cover the use cases of a JMS/Transactional broker? I.e. do we need to allow clients to use this virtual broker without any addresses configured?

@k-wall @rgodfrey Any concerns/comments to this?