├── NOTICE ├── solace-spring-cloud-stream-binder ├── solace-spring-cloud-stream-binder │ └── src │ │ ├── test │ │ ├── resources │ │ │ ├── oauth2 │ │ │ │ ├── certs │ │ │ │ │ ├── rootCA │ │ │ │ │ │ ├── rootCA.srl │ │ │ │ │ │ ├── rootCA.der │ │ │ │ │ │ └── rootCA.crt │ │ │ │ │ ├── client │ │ │ │ │ │ ├── client.p12 │ │ │ │ │ │ ├── client-keystore.jks │ │ │ │ │ │ ├── client-truststore.p12 │ │ │ │ │ │ ├── client.csr │ │ │ │ │ │ ├── client.crt │ │ │ │ │ │ └── client.key │ │ │ │ │ ├── solbroker_san.conf │ │ │ │ │ ├── keycloak_san.conf │ │ │ │ │ ├── broker │ │ │ │ │ │ ├── solbroker.csr │ │ │ │ │ │ ├── solbroker.key │ │ │ │ │ │ └── solbroker.crt │ │ │ │ │ └── keycloak │ │ │ │ │ │ ├── keycloak.csr │ │ │ │ │ │ ├── keycloak.key │ │ │ │ │ │ └── keycloak.crt │ │ │ │ ├── oauth │ │ │ │ │ ├── www │ │ │ │ │ │ └── index.html │ │ │ │ │ └── nginx.conf │ │ │ │ ├── solace.env │ │ │ │ ├── solace_tls.env │ │ │ │ └── free-tier-broker-with-tls-and-oauth-docker-compose.yml │ │ │ ├── META-INF │ │ │ │ └── services │ │ │ │ │ ├── org.junit.platform.launcher.PostDiscoveryFilter │ │ │ │ │ ├── org.junit.jupiter.api.extension.Extension │ │ │ │ │ └── com.solace.test.integration.junit.jupiter.extension.PubSubPlusExtension$ExternalProvider │ │ │ ├── application.properties │ │ │ ├── logback.xml │ │ │ ├── junit-platform.properties │ │ │ ├── application-multibinder.yml │ │ │ └── application-lazySessionInit.yml │ │ └── java │ │ │ └── com │ │ │ └── solace │ │ │ └── spring │ │ │ └── cloud │ │ │ └── stream │ │ │ └── binder │ │ │ ├── test │ │ │ ├── util │ │ │ │ ├── SerializableFoo.java │ │ │ │ ├── ThrowingSupplier.java │ │ │ │ ├── ThrowingFunction.java │ │ │ │ ├── RetryableAssertions.java │ │ │ │ └── SimpleJCSMPEventHandler.java │ │ │ ├── spring │ │ │ │ ├── MessageLayout.java │ │ │ │ ├── MessageGenerator.java │ │ │ │ ├── configuration │ │ │ │ │ └── TestMeterRegistryConfiguration.java │ │ │ │ └── BatchedMessageCollector.java │ │ │ └── junit │ │ │ │ ├── param │ │ │ │ └── provider │ │ │ │ │ └── JCSMPMessageTypeArgumentsProvider.java │ │ │ │ └── launcher │ │ │ │ └── filter │ │ │ │ └── PostDiscoveryClassNameExclusionFilter.java │ │ │ ├── springBootTests │ │ │ ├── customizer │ │ │ │ └── SpringCloudStreamApp.java │ │ │ ├── multibinder │ │ │ │ └── SpringCloudStreamApp.java │ │ │ ├── oauth2 │ │ │ │ └── SpringCloudStreamOAuth2App.java │ │ │ └── session │ │ │ │ └── SpringCloudStreamApp.java │ │ │ ├── config │ │ │ └── SolaceBinderClientInfoProviderTest.java │ │ │ └── health │ │ │ ├── indicators │ │ │ └── SolaceBinderHealthIndicatorTest.java │ │ │ └── handlers │ │ │ └── SolaceSessionEventHandlerTest.java │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ ├── spring.binders │ │ │ ├── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ └── shared.beans │ │ ├── java │ │ └── com │ │ │ └── solace │ │ │ └── spring │ │ │ └── cloud │ │ │ └── stream │ │ │ └── binder │ │ │ └── config │ │ │ ├── SolaceServiceAutoConfiguration.java │ │ │ ├── SolaceMeterConfiguration.java │ │ │ ├── ExtendedBindingHandlerMappingsProviderConfiguration.java │ │ │ ├── SolaceSessionConfig.java │ │ │ └── SolaceHealthIndicatorsConfiguration.java │ │ └── java-templates │ │ └── com │ │ └── solace │ │ └── spring │ │ └── cloud │ │ └── stream │ │ └── binder │ │ └── config │ │ └── SolaceBinderClientInfoProvider.java ├── README.md └── solace-spring-cloud-stream-binder-core │ └── src │ ├── main │ └── java │ │ └── com │ │ └── solace │ │ └── spring │ │ └── cloud │ │ └── stream │ │ └── binder │ │ ├── util │ │ ├── EndpointType.java │ │ ├── DestinationType.java │ │ ├── SessionInitializationMode.java │ │ ├── ClosedChannelBindingException.java │ │ ├── SolaceAcknowledgmentException.java │ │ ├── BatchWaitStrategy.java │ │ ├── UnboundFlowReceiverContainerException.java │ │ ├── SolaceMessageConversionException.java │ │ ├── SolaceBatchAcknowledgementException.java │ │ ├── SolaceSessionManager.java │ │ ├── SmfMessagePayloadWriteCompatibility.java │ │ ├── StaticMessageHeaderMapAccessor.java │ │ ├── SmfMessageHeaderWriteCompatibility.java │ │ ├── CorrelationData.java │ │ ├── SolaceFlowEventHandler.java │ │ ├── BatchProxyCorrelationKey.java │ │ ├── MessageContainer.java │ │ ├── SolaceMessageHeaderErrorMessageStrategy.java │ │ ├── SharedResourceManager.java │ │ ├── ErrorQueueInfrastructure.java │ │ └── ToStringer.java │ │ ├── provisioning │ │ ├── QueueNameDestinationEncoding.java │ │ ├── SolaceProducerDestination.java │ │ ├── EndpointProvider.java │ │ ├── SolaceConsumerDestination.java │ │ └── ExpressionContextRoot.java │ │ ├── health │ │ ├── indicators │ │ │ ├── FlowHealthIndicator.java │ │ │ └── SessionHealthIndicator.java │ │ ├── contributors │ │ │ ├── BindingHealthContributor.java │ │ │ ├── BindingsHealthContributor.java │ │ │ ├── FlowsHealthContributor.java │ │ │ └── SolaceBinderHealthContributor.java │ │ ├── handlers │ │ │ ├── SolaceFlowHealthEventHandler.java │ │ │ └── SolaceSessionEventHandler.java │ │ ├── base │ │ │ └── SolaceHealthIndicator.java │ │ └── SolaceBinderHealthAccessor.java │ │ ├── properties │ │ ├── SolaceBinderConfigurationProperties.java │ │ ├── SmfMessageReaderProperties.java │ │ ├── SolaceBindingProperties.java │ │ ├── SolaceExtendedBindingProperties.java │ │ ├── SolaceSessionHealthProperties.java │ │ └── SmfMessageWriterProperties.java │ │ ├── meter │ │ ├── SolaceMeterAccessor.java │ │ └── SolaceMessageMeterBinder.java │ │ ├── messaging │ │ ├── HeaderMeta.java │ │ └── SolaceBinderHeaderMeta.java │ │ └── inbound │ │ └── acknowledge │ │ ├── JCSMPAcknowledgementCallbackFactory.java │ │ ├── SolaceAckUtil.java │ │ └── TransactedJCSMPAcknowledgementCallback.java │ └── test │ ├── resources │ ├── META-INF │ │ └── services │ │ │ ├── org.junit.jupiter.api.extension.Extension │ │ │ └── com.solace.test.integration.junit.jupiter.extension.PubSubPlusExtension$ExternalProvider │ ├── logback.xml │ └── junit-platform.properties │ └── java │ └── com │ └── solace │ └── spring │ └── cloud │ └── stream │ └── binder │ ├── test │ ├── util │ │ ├── ThrowingFunction.java │ │ ├── SerializableFoo.java │ │ └── RetryableAssertions.java │ ├── spring │ │ ├── MessageGenerator.java │ │ └── BatchedMessageCollector.java │ └── junit │ │ └── param │ │ └── provider │ │ └── SolaceSpringHeaderArgumentsProvider.java │ ├── meter │ └── SolaceMeterAccessorTest.java │ ├── util │ ├── BatchProxyCorrelationKeyTest.java │ └── StaticMessageHeaderMapAccessorTest.java │ ├── properties │ ├── SmfMessageWriterPropertiesTest.java │ └── SolaceConsumerPropertiesTest.java │ ├── health │ └── base │ │ └── SolaceHealthIndicatorTest.java │ └── inbound │ ├── InboundXMLMessageListenerTest.java │ ├── JCSMPMessageSourceTest.java │ └── JCSMPInboundChannelAdapterTest.java ├── .gitmodules ├── .gitignore ├── .github ├── dependabot.yml ├── issue-template-checkStartSpringIO.md └── workflows │ ├── snapshot-release.yml │ ├── checkStartSpringIO.yml │ ├── build-test.yml │ └── release.yml ├── solace-spring-cloud-stream-binder-opentelemetry ├── solace-spring-cloud-stream-binder-instrumentation-tests │ └── src │ │ └── test │ │ ├── java │ │ ├── io │ │ │ └── jaegertracing │ │ │ │ └── api_v3 │ │ │ │ └── README.MD │ │ └── com │ │ │ └── solace │ │ │ └── spring │ │ │ └── cloud │ │ │ └── stream │ │ │ └── binder │ │ │ └── instrumentation │ │ │ └── springBootTests │ │ │ └── app │ │ │ ├── MainApp.java │ │ │ ├── SupplierConfig.java │ │ │ ├── ConsumerConfig.java │ │ │ ├── ProcessorConfig.java │ │ │ ├── DynamicDestinationProcessorConfig.java │ │ │ ├── ErrorHandlerConfig.java │ │ │ └── ManualAckConfig.java │ │ └── resources │ │ ├── application-supplier.yml │ │ ├── otel-collector-config.yaml │ │ ├── application-consumer.yml │ │ ├── application-manualAck.yml │ │ ├── application-processor.yml │ │ ├── application-bindingErrorHandler.yml │ │ ├── application-globalErrorHandler.yml │ │ └── application-dynamicDestinationProcessor.yml └── solace-spring-cloud-stream-binder-instrumentation │ └── src │ └── main │ └── java │ └── com │ └── solace │ └── spring │ └── cloud │ └── stream │ └── binder │ └── instrumentation │ └── SolaceBinderInstrumentationModule.java ├── CONTRIBUTING.md ├── solace-spring-cloud-starters └── solace-spring-cloud-stream-starter │ └── pom.xml ├── maven └── settings.xml └── solace-spring-cloud-bom ├── pom.xml └── README.md /NOTICE: -------------------------------------------------------------------------------- 1 | This product includes software originally developed by Solace Inc. 2 | Copyright 2019 Solace Inc. -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/rootCA/rootCA.srl: -------------------------------------------------------------------------------- 1 | 6C05509733CDE0014B58B238944F91CF0D5C1BE9 2 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "solace-integration-test-support"] 2 | path = solace-integration-test-support 3 | url = ../../SolaceDev/solace-integration-test-support.git 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Intellij configuration files 2 | .idea 3 | **/*.iml 4 | 5 | # Build files 6 | **/target 7 | **/.flattened-pom.xml 8 | 9 | # Release files 10 | release.properties -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/main/resources/META-INF/spring.binders: -------------------------------------------------------------------------------- 1 | solace:\ 2 | com.solace.spring.cloud.stream.binder.config.SolaceServiceAutoConfiguration -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/oauth/www/index.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | Hello World!! 4 | 5 | 6 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/README.md: -------------------------------------------------------------------------------- 1 | # Spring Cloud Stream Binder for Solace PubSub+ 2 | 3 | Please go to the starter [README.md](../solace-spring-cloud-starters/solace-spring-cloud-stream-starter) for documentation on how to use this project. 4 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/META-INF/services/org.junit.platform.launcher.PostDiscoveryFilter: -------------------------------------------------------------------------------- 1 | com.solace.spring.cloud.stream.binder.test.junit.launcher.filter.PostDiscoveryClassNameExclusionFilter 2 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/solace.env: -------------------------------------------------------------------------------- 1 | username_admin_globalaccesslevel=admin 2 | username_admin_password=admin 3 | system_scaling_maxconnectioncount=1000 4 | webmanager_redirecthttp_enable=false 5 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/util/EndpointType.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.util; 2 | 3 | public enum EndpointType { 4 | TOPIC_ENDPOINT, 5 | QUEUE 6 | } 7 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/util/DestinationType.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.util; 2 | 3 | public enum DestinationType { 4 | 5 | TOPIC, 6 | QUEUE 7 | } 8 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension: -------------------------------------------------------------------------------- 1 | com.solace.test.integration.junit.jupiter.extension.LogTestInfoExtension 2 | org.assertj.core.api.junit.jupiter.SoftAssertionsExtension 3 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension: -------------------------------------------------------------------------------- 1 | com.solace.test.integration.junit.jupiter.extension.LogTestInfoExtension 2 | org.assertj.core.api.junit.jupiter.SoftAssertionsExtension 3 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/util/SessionInitializationMode.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.util; 2 | 3 | public enum SessionInitializationMode { 4 | 5 | EAGER, 6 | LAZY; 7 | } -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/client/client.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SolaceProducts/solace-spring-cloud/HEAD/solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/client/client.p12 -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/rootCA/rootCA.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SolaceProducts/solace-spring-cloud/HEAD/solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/rootCA/rootCA.der -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/application.properties: -------------------------------------------------------------------------------- 1 | solace.java.host=localhost 2 | solace.java.msgVpn=default 3 | solace.java.clientUsername=default 4 | solace.java.clientPassword=default 5 | solace.java.connectRetries=0 6 | solace.java.connectRetriesPerHost=0 7 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/client/client-keystore.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SolaceProducts/solace-spring-cloud/HEAD/solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/client/client-keystore.jks -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/client/client-truststore.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SolaceProducts/solace-spring-cloud/HEAD/solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/certs/client/client-truststore.p12 -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/oauth2/solace_tls.env: -------------------------------------------------------------------------------- 1 | username_admin_globalaccesslevel=admin 2 | username_admin_password=admin 3 | system_scaling_maxconnectioncount=1000 4 | tls_servercertificate_filepath=/run/secrets/server.pem 5 | webmanager_redirecthttp_enable=false 6 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/java/com/solace/spring/cloud/stream/binder/test/util/SerializableFoo.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.test.util; 2 | 3 | import java.io.Serializable; 4 | 5 | public record SerializableFoo(String foo) implements Serializable { 6 | } 7 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | com.solace.spring.cloud.stream.binder.config.ExtendedBindingHandlerMappingsProviderConfiguration 2 | com.solace.spring.cloud.stream.binder.config.SolaceMeterConfiguration -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/util/ClosedChannelBindingException.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.util; 2 | 3 | public class ClosedChannelBindingException extends RuntimeException { 4 | public ClosedChannelBindingException(String message) { 5 | super(message); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/META-INF/services/com.solace.test.integration.junit.jupiter.extension.PubSubPlusExtension$ExternalProvider: -------------------------------------------------------------------------------- 1 | com.solace.spring.cloud.stream.binder.test.junit.extension.pubsubplus.provider.PubSubPlusSpringProvider 2 | com.solace.test.integration.junit.jupiter.extension.pubsubplus.provider.PubSubPlusFileProvider 3 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/test/resources/META-INF/services/com.solace.test.integration.junit.jupiter.extension.PubSubPlusExtension$ExternalProvider: -------------------------------------------------------------------------------- 1 | com.solace.spring.cloud.stream.binder.test.junit.extension.pubsubplus.provider.PubSubPlusSpringProvider 2 | com.solace.test.integration.junit.jupiter.extension.pubsubplus.provider.PubSubPlusFileProvider 3 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "maven" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | open-pull-requests-limit: 50 8 | allow: 9 | - dependency-name: "com.solace.*" 10 | - dependency-name: "com.solacesystems:*" 11 | - dependency-name: "org.springframework.*" 12 | - dependency-name: "io.opentelemetry.*" 13 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/util/SolaceAcknowledgmentException.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.util; 2 | 3 | public class SolaceAcknowledgmentException extends RuntimeException { 4 | public SolaceAcknowledgmentException(String message, Throwable cause) { 5 | super(message, cause); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder-opentelemetry/solace-spring-cloud-stream-binder-instrumentation-tests/src/test/java/io/jaegertracing/api_v3/README.MD: -------------------------------------------------------------------------------- 1 | The Jaeger Tracing Query Service client code in this package is auto generated from Jaeger API v3 proto files. 2 | 3 | Refer: https://github.com/jaegertracing/jaeger-idl/tree/main 4 | 5 | ``` 6 | git clone https://github.com/jaegertracing/jaeger-idl.git 7 | cd jaeger-idl 8 | make proto-all 9 | ``` -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/util/BatchWaitStrategy.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.util; 2 | 3 | public enum BatchWaitStrategy { 4 | /** 5 | * Adheres to the {@code batchTimeout} consumer config option. 6 | */ 7 | RESPECT_TIMEOUT, 8 | /** 9 | * Immediately collects the batch once no more messages are available on the endpoint. 10 | */ 11 | IMMEDIATE 12 | } 13 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/provisioning/QueueNameDestinationEncoding.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.provisioning; 2 | 3 | enum QueueNameDestinationEncoding { 4 | PLAIN("plain"); 5 | private final String label; 6 | 7 | QueueNameDestinationEncoding(String label) { 8 | this.label = label; 9 | } 10 | 11 | public String getLabel() { 12 | return label; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/main/resources/META-INF/shared.beans: -------------------------------------------------------------------------------- 1 | com.solace.spring.cloud.stream.binder.meter.SolaceMessageMeterBinder 2 | com.solace.spring.cloud.stream.binder.meter.SolaceMeterAccessor 3 | org.springframework.security.oauth2.client.registration.ClientRegistrationRepository 4 | org.springframework.security.oauth2.client.OAuth2AuthorizedClientService 5 | org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository 6 | com.solace.spring.cloud.stream.binder.util.SolaceSessionManager -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 |Flow receiver container is not bound to a flow receiver.
5 | *Typically caused by one of:
6 | *Proxy class for the Solace binder to access meter components. 7 | * Always use this instead of directly using meter components in Solace binder code.
8 | *Allows for the Solace binder to still function correctly without micrometer on the classpath.
9 | */ 10 | public class SolaceMeterAccessor { 11 | private final SolaceMessageMeterBinder solaceMessageMeterBinder; 12 | 13 | public SolaceMeterAccessor(SolaceMessageMeterBinder solaceMessageMeterBinder) { 14 | this.solaceMessageMeterBinder = solaceMessageMeterBinder; 15 | } 16 | 17 | public void recordMessage(String bindingName, XMLMessage message) { 18 | solaceMessageMeterBinder.recordMessage(bindingName, message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/test/java/com/solace/spring/cloud/stream/binder/test/util/SerializableFoo.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.test.util; 2 | 3 | import java.io.Serializable; 4 | import java.util.Objects; 5 | 6 | public class SerializableFoo implements Serializable { 7 | private final String someVar0; 8 | private final String someVar1; 9 | 10 | public SerializableFoo(String someVar0, String someVar1) { 11 | this.someVar0 = someVar0; 12 | this.someVar1 = someVar1; 13 | } 14 | 15 | @Override 16 | public boolean equals(Object o) { 17 | if (this == o) return true; 18 | if (o == null || getClass() != o.getClass()) return false; 19 | SerializableFoo that = (SerializableFoo) o; 20 | return Objects.equals(someVar0, that.someVar0) && 21 | Objects.equals(someVar1, that.someVar1); 22 | } 23 | 24 | @Override 25 | public int hashCode() { 26 | return Objects.hash(someVar0, someVar1); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/messaging/HeaderMeta.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.messaging; 2 | 3 | public interface HeaderMetaThe number of session reconnect attempts until the health goes {@code DOWN}. This will happen regardless if 12 | * the underlying session is actually still reconnecting. Setting this to {@code 0} will disable this feature.
13 | *This feature operates independently of the PubSub+ session reconnect feature. Meaning that if PubSub+ 14 | * session reconnect is configured to retry less than the value given to this property, then this feature 15 | * effectively does nothing.
16 | */ 17 | @Min(0) 18 | private long reconnectAttemptsUntilDown = 0; 19 | 20 | public long getReconnectAttemptsUntilDown() { 21 | return reconnectAttemptsUntilDown; 22 | } 23 | 24 | public void setReconnectAttemptsUntilDown(long reconnectAttemptsUntilDown) { 25 | this.reconnectAttemptsUntilDown = reconnectAttemptsUntilDown; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder-opentelemetry/solace-spring-cloud-stream-binder-instrumentation-tests/src/test/resources/application-consumer.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | cloud: 3 | function: 4 | definition: consumer1;source1 5 | 6 | stream: 7 | poller: 8 | initialDelay: 2000 9 | fixed-delay: 300000 # 300 seconds 10 | 11 | bindings: 12 | source1-out-0: 13 | destination: solace/supply/consumerQueue 14 | binder: local-solace 15 | 16 | consumer1-in-0: 17 | destination: consumerQueue 18 | group: consumerGroup 19 | binder: local-solace 20 | 21 | binders: 22 | local-solace: 23 | type: solace 24 | environment: 25 | solace: 26 | java: 27 | host: tcp://localhost:55555 28 | msgVpn: default 29 | clientUsername: default 30 | clientPassword: default 31 | 32 | solace: 33 | default: 34 | consumer: 35 | add-destination-as-subscription-to-queue: false 36 | provision-durable-queue: true 37 | provision-error-queue: false 38 | queue-name-expression: "destination" 39 | queueMaxMsgRedelivery: 2 40 | 41 | bindings: 42 | consumer1-in-0: 43 | consumer: 44 | queueAdditionalSubscriptions: solace/supply/consumerQueue 45 | 46 | server: 47 | port: 0 -------------------------------------------------------------------------------- /solace-spring-cloud-stream-binder/solace-spring-cloud-stream-binder-core/src/main/java/com/solace/spring/cloud/stream/binder/health/contributors/BindingHealthContributor.java: -------------------------------------------------------------------------------- 1 | package com.solace.spring.cloud.stream.binder.health.contributors; 2 | 3 | import org.springframework.boot.actuate.health.CompositeHealthContributor; 4 | import org.springframework.boot.actuate.health.HealthContributor; 5 | import org.springframework.boot.actuate.health.NamedContributor; 6 | 7 | import java.util.Collections; 8 | import java.util.Iterator; 9 | import java.util.Set; 10 | 11 | public class BindingHealthContributor implements CompositeHealthContributor { 12 | private final FlowsHealthContributor flowsHealthContributor; 13 | private static final String FLOWS = "flows"; 14 | 15 | public BindingHealthContributor(FlowsHealthContributor flowsHealthContributor) { 16 | this.flowsHealthContributor = flowsHealthContributor; 17 | } 18 | 19 | @Override 20 | public HealthContributor getContributor(String name) { 21 | return name.equals(FLOWS) ? flowsHealthContributor : null; 22 | } 23 | 24 | @Override 25 | public IteratorIf this is the first key to claim this shared resource, {@link #create()} the resource. 27 | * @param key the registration key of the caller that wants to use this resource 28 | * @return the shared resource 29 | * @throws Exception whatever exception that may be thrown by {@link #create()} 30 | */ 31 | public T get(String key) throws Exception { 32 | synchronized (lock) { 33 | if (registeredIds.isEmpty()) { 34 | LOGGER.info("No {} exists, a new one will be created", type); 35 | sharedResource = create(); 36 | } else { 37 | LOGGER.trace("A message {} already exists, reusing it", type); 38 | } 39 | 40 | registeredIds.add(key); 41 | } 42 | 43 | return sharedResource; 44 | } 45 | 46 | /** 47 | * De-register {@code key} from the shared resource. 48 | *
If this is the last {@code key} associated to the shared resource, {@link #close()} the resource.
49 | * @param key the registration key of the caller that is using the resource
50 | */
51 | public void release(String key) {
52 | synchronized (lock) {
53 | if (!registeredIds.contains(key)) return;
54 |
55 | if (registeredIds.size() <= 1) {
56 | LOGGER.info("{} is the last user, closing {}...", key, type);
57 | close();
58 | sharedResource = null;
59 | } else {
60 | LOGGER.info("{} is not the last user, persisting {}...", key, type);
61 | }
62 | registeredIds.remove(key);
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/solace-spring-cloud-stream-binder-opentelemetry/solace-spring-cloud-stream-binder-instrumentation/src/main/java/com/solace/spring/cloud/stream/binder/instrumentation/SolaceBinderInstrumentationModule.java:
--------------------------------------------------------------------------------
1 | package com.solace.spring.cloud.stream.binder.instrumentation;
2 |
3 | import com.google.auto.service.AutoService;
4 | import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
5 | import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
6 | import java.util.Arrays;
7 | import java.util.List;
8 |
9 | @AutoService(InstrumentationModule.class)
10 | public final class SolaceBinderInstrumentationModule extends InstrumentationModule {
11 |
12 | public SolaceBinderInstrumentationModule() {
13 | super("spring-cloud-stream-binder-solace-instrumentation");
14 | }
15 |
16 | @Override
17 | public int order() {
18 | return 1;
19 | }
20 |
21 | @Override
22 | public List>> {
17 | private final Function
>withPayload(new ArrayList<>())
29 | .setHeader(SolaceBinderHeaders.BATCHED_HEADERS, new ArrayList