mirror of
https://github.com/hapifhir/hapi-fhir.git
synced 2025-03-09 14:33:32 +00:00
added queue naming service
This commit is contained in:
parent
4570e50c03
commit
2c21d72c03
@ -0,0 +1,7 @@
|
|||||||
|
package ca.uhn.fhir.jpa.subscription.module.cache;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jpa.subscription.module.CanonicalSubscription;
|
||||||
|
|
||||||
|
public interface ISubscriptionDeliveryChannelNamer {
|
||||||
|
String nameFromSubscription(CanonicalSubscription theCanonicalSubscription);
|
||||||
|
}
|
@ -20,6 +20,7 @@ package ca.uhn.fhir.jpa.subscription.module.cache;
|
|||||||
* #L%
|
* #L%
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jpa.subscription.module.CanonicalSubscription;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.messaging.SubscribableChannel;
|
import org.springframework.messaging.SubscribableChannel;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -29,16 +30,16 @@ public class SubscriptionChannelFactory {
|
|||||||
|
|
||||||
private ISubscribableChannelFactory mySubscribableChannelFactory;
|
private ISubscribableChannelFactory mySubscribableChannelFactory;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
ISubscriptionDeliveryChannelNamer mySubscriptionDeliveryChannelNamer;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public SubscriptionChannelFactory(ISubscribableChannelFactory theSubscribableChannelFactory) {
|
public SubscriptionChannelFactory(ISubscribableChannelFactory theSubscribableChannelFactory) {
|
||||||
mySubscribableChannelFactory = theSubscribableChannelFactory;
|
mySubscribableChannelFactory = theSubscribableChannelFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SubscribableChannel newDeliveryChannel(String theSubscriptionId, String theChannelType) {
|
public SubscribableChannel newDeliveryChannel(CanonicalSubscription theCanonicalSubscription) {
|
||||||
String channelName = "subscription-delivery-" +
|
String channelName = mySubscriptionDeliveryChannelNamer.nameFromSubscription(theCanonicalSubscription);
|
||||||
theChannelType +
|
|
||||||
"-" +
|
|
||||||
theSubscriptionId;
|
|
||||||
return mySubscribableChannelFactory.createSubscribableChannel(channelName, mySubscribableChannelFactory.getDeliveryChannelConcurrentConsumers());
|
return mySubscribableChannelFactory.createSubscribableChannel(channelName, mySubscribableChannelFactory.getDeliveryChannelConcurrentConsumers());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
package ca.uhn.fhir.jpa.subscription.module.cache;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jpa.subscription.module.CanonicalSubscription;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class SubscriptionDeliveryChannelNamer implements ISubscriptionDeliveryChannelNamer {
|
||||||
|
@Override
|
||||||
|
public String nameFromSubscription(CanonicalSubscription theCanonicalSubscription) {
|
||||||
|
String channelType = theCanonicalSubscription.getChannelType().toCode().toLowerCase();
|
||||||
|
String subscriptionId = theCanonicalSubscription.getIdPart();
|
||||||
|
return "subscription-delivery-" +
|
||||||
|
channelType +
|
||||||
|
"-" +
|
||||||
|
subscriptionId;
|
||||||
|
}
|
||||||
|
}
|
@ -95,7 +95,7 @@ public class SubscriptionRegistry {
|
|||||||
Optional<MessageHandler> deliveryHandler;
|
Optional<MessageHandler> deliveryHandler;
|
||||||
|
|
||||||
if (myModelConfig.isSubscriptionMatchingEnabled()) {
|
if (myModelConfig.isSubscriptionMatchingEnabled()) {
|
||||||
deliveryChannel = mySubscriptionDeliveryChannelFactory.newDeliveryChannel(subscriptionId, canonicalized.getChannelType().toCode().toLowerCase());
|
deliveryChannel = mySubscriptionDeliveryChannelFactory.newDeliveryChannel(canonicalized);
|
||||||
deliveryHandler = mySubscriptionDeliveryHandlerFactory.createDeliveryHandler(canonicalized);
|
deliveryHandler = mySubscriptionDeliveryHandlerFactory.createDeliveryHandler(canonicalized);
|
||||||
} else {
|
} else {
|
||||||
deliveryChannel = null;
|
deliveryChannel = null;
|
||||||
|
@ -7,6 +7,8 @@ import ca.uhn.fhir.interceptor.api.Pointcut;
|
|||||||
import ca.uhn.fhir.jpa.model.concurrency.IPointcutLatch;
|
import ca.uhn.fhir.jpa.model.concurrency.IPointcutLatch;
|
||||||
import ca.uhn.fhir.jpa.model.concurrency.PointcutLatch;
|
import ca.uhn.fhir.jpa.model.concurrency.PointcutLatch;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.BaseSubscriptionDstu3Test;
|
import ca.uhn.fhir.jpa.subscription.module.BaseSubscriptionDstu3Test;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.module.CanonicalSubscription;
|
||||||
|
import ca.uhn.fhir.jpa.subscription.module.CanonicalSubscriptionChannelType;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.ResourceModifiedMessage;
|
import ca.uhn.fhir.jpa.subscription.module.ResourceModifiedMessage;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.cache.SubscriptionChannelFactory;
|
import ca.uhn.fhir.jpa.subscription.module.cache.SubscriptionChannelFactory;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.cache.SubscriptionLoader;
|
import ca.uhn.fhir.jpa.subscription.module.cache.SubscriptionLoader;
|
||||||
@ -14,6 +16,7 @@ import ca.uhn.fhir.jpa.subscription.module.cache.SubscriptionRegistry;
|
|||||||
import ca.uhn.fhir.jpa.subscription.module.config.MockFhirClientSubscriptionProvider;
|
import ca.uhn.fhir.jpa.subscription.module.config.MockFhirClientSubscriptionProvider;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.subscriber.ResourceModifiedJsonMessage;
|
import ca.uhn.fhir.jpa.subscription.module.subscriber.ResourceModifiedJsonMessage;
|
||||||
import ca.uhn.fhir.jpa.subscription.module.subscriber.SubscriptionMatchingSubscriberTest;
|
import ca.uhn.fhir.jpa.subscription.module.subscriber.SubscriptionMatchingSubscriberTest;
|
||||||
|
import ca.uhn.fhir.model.primitive.IdDt;
|
||||||
import ca.uhn.fhir.rest.annotation.Create;
|
import ca.uhn.fhir.rest.annotation.Create;
|
||||||
import ca.uhn.fhir.rest.annotation.ResourceParam;
|
import ca.uhn.fhir.rest.annotation.ResourceParam;
|
||||||
import ca.uhn.fhir.rest.annotation.Update;
|
import ca.uhn.fhir.rest.annotation.Update;
|
||||||
@ -80,8 +83,11 @@ public abstract class BaseBlockingQueueSubscribableChannelDstu3Test extends Base
|
|||||||
ourCreatedObservations.clear();
|
ourCreatedObservations.clear();
|
||||||
ourUpdatedObservations.clear();
|
ourUpdatedObservations.clear();
|
||||||
ourContentTypes.clear();
|
ourContentTypes.clear();
|
||||||
|
CanonicalSubscription canonicalSubscription = new CanonicalSubscription();
|
||||||
|
canonicalSubscription.setIdElement(new IdDt("test"));
|
||||||
|
canonicalSubscription.setChannelType(CanonicalSubscriptionChannelType.RESTHOOK);
|
||||||
mySubscriptionRegistry.unregisterAllSubscriptions();
|
mySubscriptionRegistry.unregisterAllSubscriptions();
|
||||||
ourSubscribableChannel = mySubscriptionChannelFactory.newDeliveryChannel("test", Subscription.SubscriptionChannelType.RESTHOOK.toCode().toLowerCase());
|
ourSubscribableChannel = mySubscriptionChannelFactory.newDeliveryChannel(canonicalSubscription);
|
||||||
ourSubscribableChannel.subscribe(myStandaloneSubscriptionMessageHandler);
|
ourSubscribableChannel.subscribe(myStandaloneSubscriptionMessageHandler);
|
||||||
myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.SUBSCRIPTION_AFTER_PERSISTED_RESOURCE_CHECKED, mySubscriptionMatchingPost);
|
myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.SUBSCRIPTION_AFTER_PERSISTED_RESOURCE_CHECKED, mySubscriptionMatchingPost);
|
||||||
myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.SUBSCRIPTION_AFTER_ACTIVE_SUBSCRIPTION_REGISTERED, mySubscriptionActivatedPost);
|
myInterceptorRegistry.registerAnonymousInterceptor(Pointcut.SUBSCRIPTION_AFTER_ACTIVE_SUBSCRIPTION_REGISTERED, mySubscriptionActivatedPost);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user