http://github.com/dpp/liftweb/issues/#issue/270
Fixed and on review board. Cheers, Tim On Jan 5, 8:57 am, Timothy Perrett <[email protected]> wrote: > We don't accept patches for legal reasons. However, I will upgrade the > module today for you - giving a similar result. > > Cheers, Tim > > Sent from my iPhone > > On 5 Jan 2010, at 04:29, Franz Bettag <[email protected]> wrote: > > > > > Hey guys, > > > i've just updated the amqp code. I started a pull request on github > > but that seems *not* to be the proper way *smirking @dpp's auto- > > reply*. > > > Anyway here is the patch. The problem was that in version 1.5.0 of > > rabbitmq's library, the ticket-stuff was removed. > > > diff --git a/lift-modules/lift-amqp/pom.xml b/lift-modules/lift-amqp/ > > pom.xml > > index 9f4c1d5..424be0e 100644 > > --- a/lift-modules/lift-amqp/pom.xml > > +++ b/lift-modules/lift-amqp/pom.xml > > @@ -32,6 +32,15 @@ > > </parent> > > <artifactId>lift-amqp</artifactId> > > > + <repositories> > > + <repository> > > + <id>nexus.griddynamics.net</id> > > + <name>Nexus Maven2 Repository</name> > > + <url>https://nexus.griddynamics.net/nexus/content/groups/ > > public</url> > > + </repository> > > + </repositories> > > + > > + > > <!-- <properties/> --> > > > <!-- > > @@ -55,8 +64,8 @@ > > </dependency> > > <dependency> > > <groupId>com.rabbitmq</groupId> > > - <artifactId>rabbitmq-client</artifactId> > > - <version>1.3.0</version> > > + <artifactId>amqp-client</artifactId> > > + <version>1.7.0</version> > > </dependency> > > </dependencies> > > > diff --git a/lift-modules/lift-amqp/src/main/scala/net/liftweb/amqp/ > > AMQPDispatcher.scala b/lift-modules/lift-amqp/src/main/scala/net/ > > liftweb/amqp/AMQPDispatcher.scala > > index 26bca73..96c66c9 100644 > > --- a/lift-modules/lift-amqp/src/main/scala/net/liftweb/amqp/ > > AMQPDispatcher.scala > > +++ b/lift-modules/lift-amqp/src/main/scala/net/liftweb/amqp/ > > AMQPDispatcher.scala > > @@ -91,7 +91,7 @@ abstract class AMQPDispatcher[T](cf: > > ConnectionFactory, host: String, port: Int) > > class SerializedConsumer[T](channel: Channel, a: LiftActor) extends > > DefaultConsumer(channel) { > > override def handleDelivery(tag: String, env: Envelope, props: > > AMQP.BasicProperties, body: Array[Byte]) { > > val routingKey = env.getRoutingKey > > - val contentType = props.contentType > > + val contentType = props.getContentType > > val deliveryTag = env.getDeliveryTag > > val in = new ObjectInputStream(new ByteArrayInputStream(body)) > > val t = in.readObject.asInstanceOf[T]; > > @@ -109,14 +109,12 @@ class SerializedConsumer[T](channel: Channel, a: > > LiftActor) extends DefaultConsu > > class ExampleSerializedAMQPDispatcher[T](factory: ConnectionFactory, > > host: String, port: Int) > > extends AMQPDispatcher[T](factory, host, port) { > > override def configure(channel: Channel) { > > - // Get the ticket. > > - val ticket = channel.accessRequest("/data") > > // Set up the exchange and queue > > - channel.exchangeDeclare(ticket, "mult", "direct") > > - channel.queueDeclare(ticket, "mult_queue") > > - channel.queueBind(ticket, "mult_queue", "mult", "routeroute") > > + channel.exchangeDeclare("mult", "direct") > > + channel.queueDeclare("mult_queue") > > + channel.queueBind("mult_queue", "mult", "routeroute") > > // Use the short version of the basicConsume method for > > convenience. > > - channel.basicConsume(ticket, "mult_queue", false, new > > SerializedConsumer(channel, this)) > > + channel.basicConsume("mult_queue", false, new SerializedConsumer > > (channel, this)) > > } > > } > > > diff --git a/lift-modules/lift-amqp/src/main/scala/net/liftweb/amqp/ > > AMQPSender.scala b/lift-modules/lift-amqp/src/main/scala/net/liftweb/ > > amqp/AMQPSender.scala > > index 2c60ed6..dc29a2a 100644 > > --- a/lift-modules/lift-amqp/src/main/scala/net/liftweb/amqp/ > > AMQPSender.scala > > +++ b/lift-modules/lift-amqp/src/main/scala/net/liftweb/amqp/ > > AMQPSender.scala > > @@ -14,11 +14,6 @@ import _root_.java.io.ObjectOutputStream > > abstract class AMQPSender[T](cf: ConnectionFactory, host: String, > > port: Int, exchange: String, routingKey: String) extends LiftActor { > > val conn = cf.newConnection(host, port) > > val channel = conn.createChannel() > > - val ticket = configure(channel) > > - /** > > - * Override this to use your own AMQP queue/exchange with the given > > channel. > > - */ > > - def configure(channel: Channel): Int > > > def send(msg: T) { > > // Now write an object to a byte array and shove it across the > > wire. > > @@ -26,7 +21,7 @@ abstract class AMQPSender[T](cf: ConnectionFactory, > > host: String, port: Int, exc > > val store = new ObjectOutputStream(bytes) > > store.writeObject(msg) > > store.close > > - channel.basicPublish(ticket, exchange, routingKey, null, > > bytes.toByteArray) > > + channel.basicPublish(exchange, routingKey, null, > > bytes.toByteArray) > > } > > > protected def messageHandler = { > > @@ -46,12 +41,6 @@ abstract class AMQPSender[T](cf: ConnectionFactory, > > host: String, port: Int, exc > > * consider creating Actor-based Senders, that will help your > > application to scale. > > */ > > class StringAMQPSender(cf: ConnectionFactory, host: String, port: > > Int, exchange: String, routingKey: String) extends AMQPSender[String] > > (cf, host, port, exchange, routingKey) { > > - override def configure(channel: Channel) = { > > - val conn = cf.newConnection(host, port) > > - val channel = conn.createChannel() > > - val ticket = channel.accessRequest("/data") > > - ticket > > - } > > } > > > /** > > @@ -90,13 +79,12 @@ object ExampleDirectAMQPSender { > > val factory = new ConnectionFactory(params) > > val conn = factory.newConnection(host, port) > > val channel = conn.createChannel() > > - val ticket = channel.accessRequest("/data") > > // Now write an object to a byte array and shove it across the > > wire. > > val bytes = new ByteArrayOutputStream > > val store = new ObjectOutputStream(bytes) > > store.writeObject(msg) > > store.close > > - channel.basicPublish(ticket, "mult", "routeroute", null, > > bytes.toByteArray) > > + channel.basicPublish("mult", "routeroute", null, > > bytes.toByteArray) > > } > > } > > > On 5 Jan., 04:34, vishnu <[email protected]> wrote: > >> well I'm not sure how to describe it differently. As you said it's > >> only > >> service tier. The truth is I dont know anything about Lift yet and > >> Im just > >> now running through some basic Scala books. > > >> I need a library with which to talk to rabbitmq as a subscriber > >> that might > >> work at a higher level than the default java api that comes with > >> rabbitmq > >> and ideally something that provides the same service for me talk to a > >> database via scala. I haven't seen Akka before, so I'll take a look > >> at that > >> :). Would you say mapper is worth it? > > >> On Tue, Jan 5, 2010 at 2:23 AM, Timothy Perrett > >> <[email protected]>wrote: > > >>> It depends on your use case... you don't really describe exactly > >>> what you > >>> want to do. Perhaps start by providing more detail? If you want > >>> service teir > >>> *only* though, its quite probable that akka would be a better fix. > > >>> Cheers, Tim > > >>> On 4 Jan 2010, at 20:30, Channing Walton wrote: > > >>>> Maybe Akka would be better for you?http://akkasource.org/ > >>>> "Akka has an AMQP module which abstracts AMQP Producer and > >>>> Consumer as > >>>> Actors." > > >>>> Channing > > >>>> vishnu-11 wrote: > > >>>>> Hi > >>>>> I'm trying to use lift to right a back end for a system that > >>>>> communicates via AMQP. The idea is to have a bunch of (threads?, > >>>>> processes? actors?) that subscribe to some queues on a queueing > >>>>> system > >>>>> and react to various messages by contacting various third party > >>>>> systems and persisting messages to a database. > > >>>>> I was wondering firstly if it makes sense to use lift, or if it > >>>>> makes > >>>>> more sense to pull various parts out of lift and use them? > > >>>>> Additionally, looking at the lift amqp code, it seems to be a > >>>>> little > >>>>> out of date, especially with regard to amqp. Does anyone know if > >>>>> there > >>>>> has been any active work on this segment? > > >>>>> -- > > >>>>> You received this message because you are subscribed to the Google > >>> Groups > >>>>> "Lift" group. > >>>>> To post to this group, send email to [email protected]. > >>>>> To unsubscribe from this group, send email to > >>>>> [email protected]<liftweb > >>>>> %[email protected]> > >>> . > >>>>> For more options, visit this group at > >>>>>http://groups.google.com/group/liftweb?hl=en. > > >>>> -- > >>>> View this message in context: > >>>http://old.nabble.com/Lift-based-backend-server-subscribing-via-amqp- > >>> ... > >>>> Sent from the liftweb mailing list archive at Nabble.com. > > >>>> -- > > >>>> You received this message because you are subscribed to the > >>>> Google Groups > >>> "Lift" group. > >>>> To post to this group, send email to [email protected]. > >>>> To unsubscribe from this group, send email to > >>> [email protected]<liftweb > >>> %[email protected]> > >>> . > >>>> For more options, visit this group at > >>>http://groups.google.com/group/liftweb?hl=en. > > >>> -- > > >>> You received this message because you are subscribed to the Google > >>> Groups > >>> "Lift" group. > >>> To post to this group, send email to [email protected]. > >>> To unsubscribe from this group, send email to > >>> [email protected]<liftweb > >>> %[email protected]> > >>> . > >>> For more options, visit this group at > >>>http://groups.google.com/group/liftweb?hl=en. > > > -- > > > You received this message because you are subscribed to the Google > > Groups "Lift" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected] > > . > > For more options, visit this group > > athttp://groups.google.com/group/liftweb?hl=en > > . -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.
