Skip to content

Commit

Permalink
deploy: 104723e
Browse files Browse the repository at this point in the history
  • Loading branch information
mergify[bot] committed Nov 7, 2023
1 parent 0b140f4 commit 4591705
Showing 1 changed file with 20 additions and 20 deletions.
40 changes: 20 additions & 20 deletions js/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,26 @@ function prepareIdxAndDocMap() {
"url": "/jms4s/extra_md/code-of-conduct.html",
"content": "Code of Conduct We are committed to providing a friendly, safe and welcoming environment for all, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, nationality, or other such characteristics. Everyone is expected to follow the Scala Code of Conduct when discussing the project on the available communication channels. If you are being harassed, please contact us immediately so that we can support you. Moderation Any questions, concerns, or moderation requests please contact a member of the project."
} ,
{
"title": "Active MQ Artemis",
"url": "/jms4s/providers/active-mq-artemis/",
"content": "Active MQ Artemis Creating a jms client for an Active MQ Artemis cluster is as easy as: import cats.data.NonEmptyList import cats.effect.{ IO, Resource } import jms4s.activemq.activeMQ import jms4s.activemq.activeMQ._ import org.typelevel.log4cats.Logger import jms4s.JmsClient def jmsClientResource(implicit L: Logger[IO]): Resource[IO, JmsClient[IO]] = activeMQ.makeJmsClient[IO]( Config( endpoints = NonEmptyList.one(Endpoint(\"localhost\", 61616)), username = Some(Username(\"YOU\")), password = Some(Password(\"PW\")), clientId = ClientId(\"YOUR.APP\") ) ) Why not ActiveMQ 5 “Classic”? ActiveMQ 5 “Classic” is only supporting JMS 1.1, which is missing a bunch of features we really need to offer."
} ,
{
"title": "IBM MQ",
"url": "/jms4s/providers/ibm-mq/",
"content": "IBM MQ Creating a jms client for an IBM MQ queue manager is as easy as: import cats.data.NonEmptyList import cats.effect.{ IO, Resource } import jms4s.ibmmq.ibmMQ import jms4s.ibmmq.ibmMQ._ import jms4s.JmsClient import org.typelevel.log4cats.Logger def jmsClientResource(implicit L: Logger[IO]): Resource[IO, JmsClient[IO]] = ibmMQ.makeJmsClient[IO]( Config( qm = QueueManager(\"YOUR.QM\"), endpoints = NonEmptyList.one(Endpoint(\"localhost\", 1414)), channel = Channel(\"YOUR.CHANNEL\"), username = Some(Username(\"YOU\")), password = Some(Password(\"PW\")), clientId = ClientId(\"YOUR.APP\") ) )"
} ,
{
"title": "Providers",
"url": "/jms4s/providers/",
"content": "Providers Currently supported: Active MQ Artemis IBM MQ Supporting a new provider is a task which should be pretty straightforward. I you need a provider which is missing you can: Try contributing! PRs are always welcome! Raise an issue. Let us know, someone may eventually pick that up or we can guide you to a complete PR."
} ,
{
"title": "Producer",
"url": "/jms4s/programs/producer/",
"content": "Producer A JmsProducer is a producer that lets the client publish a message in queues/topics. sendN: to send N messages to N Destinations. def sendN( makeN: MessageFactory[F] => F[NonEmptyList[(JmsMessage, DestinationName)]] ): F[Unit] sendNWithDelay: to send N messages to N Destinations with an optional delay. def sendNWithDelay( makeNWithDelay: MessageFactory[F] => F[NonEmptyList[(JmsMessage, (DestinationName, Option[FiniteDuration]))]] ): F[Unit] sendWithDelay: to send a message to a Destination. def sendWithDelay( make1WithDelay: MessageFactory[F] => F[(JmsMessage, (DestinationName, Option[FiniteDuration]))] ): F[Unit] send: to send a message to a Destination. def send( make1: MessageFactory[F] => F[(JmsMessage, DestinationName)] ): F[Unit] For each operation, the client has to provide a function that knows how to build a JmsMessage given a MessageFactory. This may appear counter-intuitive at first, but the reason behind this design is that creating a JmsMessage is an operation that involves interacting with JMS APIs, and we want to provide a high-level API so that the user can’t do things wrong. A complete example is available in the example project. A note on concurrency A JmsProducer can be used concurrently, performing up to concurrencyLevel concurrent operation."
} ,
{
"title": "Acknowledger Consumer",
"url": "/jms4s/programs/ack-consumer/",
Expand All @@ -47,31 +67,11 @@ function prepareIdxAndDocMap() {
"url": "/jms4s/programs/auto-ack-consumer/",
"content": "Auto Acknowledger Consumer A JmsAutoAcknowledgerConsumer is a consumer that will automatically acknowledge a message after its reception. Its only operation is: def handle(f: (JmsMessage, MessageFactory[F]) => F[AutoAckAction[F]]): F[Unit] This is where the user of the API can specify its business logic, which can be any effectful operation. Creating a message is as effectful operation as well, and the MessageFactory argument will provide the only way in which a client can create a brand new message. This argument can be ignored if the client is only consuming messages. What handle expects is an AutoAckAction[F], which can be either: an AckAction.noOp, which will instructs the lib to do nothing since the message will be acknowledged regardless an AckAction.send in all its forms, which can be used to send 1 or multiple messages to 1 or multiple destinations The consumer can be configured specifying a concurrencyLevel, which is used internally to scale the operations (receive and then process up to concurrencyLevel). A complete example is available in the example project."
} ,
{
"title": "Producer",
"url": "/jms4s/programs/producer/",
"content": "Producer A JmsProducer is a producer that lets the client publish a message in queues/topics. sendN: to send N messages to N Destinations. def sendN( makeN: MessageFactory[F] => F[NonEmptyList[(JmsMessage, DestinationName)]] ): F[Unit] sendNWithDelay: to send N messages to N Destinations with an optional delay. def sendNWithDelay( makeNWithDelay: MessageFactory[F] => F[NonEmptyList[(JmsMessage, (DestinationName, Option[FiniteDuration]))]] ): F[Unit] sendWithDelay: to send a message to a Destination. def sendWithDelay( make1WithDelay: MessageFactory[F] => F[(JmsMessage, (DestinationName, Option[FiniteDuration]))] ): F[Unit] send: to send a message to a Destination. def send( make1: MessageFactory[F] => F[(JmsMessage, DestinationName)] ): F[Unit] For each operation, the client has to provide a function that knows how to build a JmsMessage given a MessageFactory. This may appear counter-intuitive at first, but the reason behind this design is that creating a JmsMessage is an operation that involves interacting with JMS APIs, and we want to provide a high-level API so that the user can’t do things wrong. A complete example is available in the example project. A note on concurrency A JmsProducer can be used concurrently, performing up to concurrencyLevel concurrent operation."
} ,
{
"title": "Program",
"url": "/jms4s/programs/",
"content": "Program A program is a high level interface that will hide all the interaction with low level JMS apis. This library is targetting JMS 2.0. There are different types of programs for consuming and/or producing, each of them is parameterized on the effect type (eg. IO). The data they consume/produce is kept as-is, thus the de/serialization is left to the user of the api (e.g. json, xml, text). Currently only javax.jms.TextMessage is supported, but we designed the api in order to easily support new message types as soon as we see demand or contributions. JmsTransactedConsumer: A consumer that supports local transactions, also producing messages to destinations. JmsAcknowledgerConsumer: A consumer that leaves the choice to acknowledge (or not to) message consumption to the user, also producing messages to destinations. JmsAutoAcknowledgerConsumer: A consumer that acknowledges message consumption automatically, also producing messages to destinations. JmsProducer: Producing messages to one or more destinations. Concurrency with JMS? The core of all JMS is the entity named JMSContext, introduced with JMS 2.0. The only safe way to scale things a bit is to create a “root” context (which will open a physical connection) and from that creating multiple other contexts. This library will keep a pool of contexts so that the user can scale up to pre-defined concurrency level."
} ,
{
"title": "Active MQ Artemis",
"url": "/jms4s/providers/active-mq-artemis/",
"content": "Active MQ Artemis Creating a jms client for an Active MQ Artemis cluster is as easy as: import cats.data.NonEmptyList import cats.effect.{ IO, Resource } import jms4s.activemq.activeMQ import jms4s.activemq.activeMQ._ import org.typelevel.log4cats.Logger import jms4s.JmsClient def jmsClientResource(implicit L: Logger[IO]): Resource[IO, JmsClient[IO]] = activeMQ.makeJmsClient[IO]( Config( endpoints = NonEmptyList.one(Endpoint(\"localhost\", 61616)), username = Some(Username(\"YOU\")), password = Some(Password(\"PW\")), clientId = ClientId(\"YOUR.APP\") ) ) Why not ActiveMQ 5 “Classic”? ActiveMQ 5 “Classic” is only supporting JMS 1.1, which is missing a bunch of features we really need to offer."
} ,
{
"title": "IBM MQ",
"url": "/jms4s/providers/ibm-mq/",
"content": "IBM MQ Creating a jms client for an IBM MQ queue manager is as easy as: import cats.data.NonEmptyList import cats.effect.{ IO, Resource } import jms4s.ibmmq.ibmMQ import jms4s.ibmmq.ibmMQ._ import jms4s.JmsClient import org.typelevel.log4cats.Logger def jmsClientResource(implicit L: Logger[IO]): Resource[IO, JmsClient[IO]] = ibmMQ.makeJmsClient[IO]( Config( qm = QueueManager(\"YOUR.QM\"), endpoints = NonEmptyList.one(Endpoint(\"localhost\", 1414)), channel = Channel(\"YOUR.CHANNEL\"), username = Some(Username(\"YOU\")), password = Some(Password(\"PW\")), clientId = ClientId(\"YOUR.APP\") ) )"
} ,
{
"title": "Providers",
"url": "/jms4s/providers/",
"content": "Providers Currently supported: Active MQ Artemis IBM MQ Supporting a new provider is a task which should be pretty straightforward. I you need a provider which is missing you can: Try contributing! PRs are always welcome! Raise an issue. Let us know, someone may eventually pick that up or we can guide you to a complete PR."
} ,
{
"title": "License",
"url": "/jms4s/extra_md/license.html",
Expand Down

0 comments on commit 4591705

Please sign in to comment.