
nstream.adapter.jms.JmsPublishingPatch Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nstream-adapter-jms Show documentation
Show all versions of nstream-adapter-jms Show documentation
Templates for consuming from and producing to JMS with Swim
// Copyright 2015-2024 Nstream, inc.
//
// Licensed under the Redis Source Available License 2.0 (RSALv2) Agreement;
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://redis.com/legal/rsalv2-agreement/
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package nstream.adapter.jms;
import javax.jms.JMSException;
import javax.jms.Message;
import swim.recon.Recon;
import swim.structure.Value;
/**
* An extendable implementation of {@link JmsPublishingAgent}
* that uses configuration to assemble state into {@link Message}
* objects and publish to JMS.
*
* @see JmsPublishingAgent
* @see JmsEgressSettings
*/
public class JmsPublishingPatch extends JmsPublishingAgent {
public JmsPublishingPatch() {
}
// TODO: To make publishing no-code:
// - Add configurable WHEN to publish (interval, on event)
// - Add configurable WHAT to publish (fixed lane, configurable lane)
@Override
protected void publish(Value structure) {
final Message message = assemblePublishable(structure);
publish(message);
}
/**
* Structure the received {@link Value} into a {@link Message} as
* defined by configuration.
*
* @param publishable the value to convert into a {@link Message}
* @return message to be published
*/
protected Message assemblePublishable(Value publishable) {
try {
return JmsAdapterUtils.assemblePublishable(publishable, this.egressSettings.contentTypeOverride(), this.session);
} catch (JMSException jmsException) {
throw new RuntimeException(nodeUri() + ": exception while assembling message: " + Recon.toString(publishable), jmsException);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy