Sha256: a6f1b6e592b1611b27cf71a93321e3a28665bbfed67d11c37295c07326aadf0b

Contents?: true

Size: 1.78 KB

Versions: 20

Compression:

Stored size: 1.78 KB

Contents

# encoding: utf-8

require "spec_helper"

describe "Exclusive server-named queue" do

  #
  # Environment
  #

  include EventedSpec::AMQPSpec

  default_timeout 2

  amqp_before do
    @channel   = AMQP::Channel.new
    @channel.should be_open

    @exchange = AMQP::Exchange.default(@channel)
  end



  it "can be used for temporary point-to-point communication" do
    @exchange.channel.should == @channel

    @channel.queue("", :exclusive => true) do |queue1|
      puts "First callback has fired"
      @channel.queue("", :exclusive => true) do |queue2|
        puts "Second callback has fired"
        request_timestamp = Time.now.to_i
        reply_timestamp   = nil

        queue1.subscribe do |header, body|
          header.timestamp.to_i.should == request_timestamp.to_i
          header.app_id.should == "Client"
          header.reply_to.should == queue2.name

          reply_timestamp = Time.now.to_i
          @exchange.publish(rand(1000), :routing_key => header.reply_to, :reply_to => queue1.name, :app_id => "Server", :timestamp => reply_timestamp)
        end

        queue2.subscribe do |header, body|
          header.timestamp.to_i.should == reply_timestamp.to_i
          header.app_id.should == "Server"
          header.reply_to.should == queue1.name
        end


        # publish the request
        @exchange.publish(rand(1000),
                          :routing_key => queue1.name,
                          :reply_to    => queue2.name,
                          :app_id      => "Client",
                          :timestamp   => request_timestamp,
                          :mandatory   => true,
                          :immediate   => true)

        done(0.2) {
          queue1.unsubscribe
          queue2.unsubscribe
        }
      end # do
    end # do
  end # it
end # describe

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
amqp-1.0.0.pre2 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.7 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.6 spec/integration/reply_queue_communication_spec.rb
amqp-1.0.0.pre1 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.5 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.4 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.3 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.2 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.1 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.0 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.0.pre3 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.0.pre2 spec/integration/reply_queue_communication_spec.rb
amqp-0.9.0.pre1 spec/integration/reply_queue_communication_spec.rb
amqp-0.8.4 spec/integration/reply_queue_communication_spec.rb
amqp-0.8.3 spec/integration/reply_queue_communication_spec.rb
amqp-0.8.2 spec/integration/reply_queue_communication_spec.rb
amqp-0.8.1 spec/integration/reply_queue_communication_spec.rb
amqp-0.8.0 spec/integration/reply_queue_communication_spec.rb
amqp-0.8.0.rc15 spec/integration/reply_queue_communication_spec.rb
amqp-0.8.0.rc14 spec/integration/reply_queue_communication_spec.rb