#!/usr/bin/env python # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # 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. # import sys from qpid.messaging import * broker = "localhost:5672" connection = Connection(broker) try: connection.open() session = connection.session() # Set up the receiver query = """ let $w := ./weather return $w/station = 'Raleigh-Durham International Airport (KRDU)' and $w/temperature_f > 50 and $w/temperature_f - $w/dewpoint > 5 and $w/wind_speed_mph > 7 and $w/wind_speed_mph < 20 """ # query="./weather" address = """ xml; { create: always, node:{ type: queue }, link: { x-bindings: [{ exchange: xml, key: weather, arguments: { xquery: %r} }] } } """ % query receiver = session.receiver(address) # Send an observation observations = """ Raleigh-Durham International Airport (KRDU) 16 70 35 """ message = Message(subject="weather", content=observations) sender = session.sender("xml") sender.send(message) # Retrieve matching message from the receiver and print it message = receiver.fetch(timeout=1) print message.content session.acknowledge() except MessagingError,m: print m connection.close()