Security News
New Python Packaging Proposal Aims to Solve Phantom Dependency Problem with SBOMs
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
@azure/core-amqp
Advanced tools
Common library for amqp based azure sdks like @azure/event-hubs.
@azure/core-amqp is a library that provides core functionality for working with the Advanced Message Queuing Protocol (AMQP) in Azure services. It is primarily used as a building block for other Azure SDKs that need to communicate over AMQP, such as Azure Service Bus and Azure Event Hubs.
AMQP Connection Management
This feature allows you to establish and manage AMQP connections. The code sample demonstrates how to create a connection context and open a connection using a connection string.
const { ConnectionContext } = require('@azure/core-amqp');
async function createConnection() {
const connectionContext = ConnectionContext.create({
connectionString: 'your-connection-string',
options: {}
});
await connectionContext.connection.open();
console.log('Connection established');
return connectionContext;
}
createConnection().catch(console.error);
AMQP Sender and Receiver
This feature allows you to send and receive messages over AMQP. The code sample demonstrates how to create a sender to send a message and a receiver to receive messages from a specified queue.
const { ConnectionContext, Sender, Receiver } = require('@azure/core-amqp');
async function sendMessage() {
const connectionContext = await createConnection();
const sender = new Sender(connectionContext, 'queue-name');
await sender.send({ body: 'Hello, World!' });
console.log('Message sent');
}
async function receiveMessage() {
const connectionContext = await createConnection();
const receiver = new Receiver(connectionContext, 'queue-name');
receiver.on('message', (message) => {
console.log('Received message:', message.body);
});
}
sendMessage().catch(console.error);
receiveMessage().catch(console.error);
AMQP Error Handling
This feature provides mechanisms for handling errors that occur during AMQP operations. The code sample demonstrates how to handle errors when establishing a connection.
const { ConnectionContext } = require('@azure/core-amqp');
async function createConnectionWithErrorHandling() {
try {
const connectionContext = ConnectionContext.create({
connectionString: 'your-connection-string',
options: {}
});
await connectionContext.connection.open();
console.log('Connection established');
return connectionContext;
} catch (error) {
console.error('Error establishing connection:', error);
}
}
createConnectionWithErrorHandling().catch(console.error);
The 'amqp10' package is a pure JavaScript implementation of the AMQP 1.0 protocol. It provides similar functionalities for managing AMQP connections, sending, and receiving messages. However, it is not specifically tailored for Azure services and lacks some of the Azure-specific optimizations and integrations found in @azure/core-amqp.
The 'rhea' package is another AMQP 1.0 client library for Node.js. It offers a flexible and extensible API for working with AMQP connections and messaging. Like 'amqp10', it is a general-purpose library and does not include Azure-specific features or optimizations.
The 'amqplib' package is a client for the AMQP 0.9.1 protocol, commonly used with RabbitMQ. While it provides robust support for AMQP messaging, it is not compatible with AMQP 1.0 and therefore not suitable for use with Azure services that require AMQP 1.0.
The @azure/core-amqp
package provides common functionality for Azure JavaScript
libraries that use the AMQP protocol
like the ones for Azure Service Bus and Azure Event Hubs.
Install this library using npm as follows:
npm install @azure/core-amqp
See our support policy for more details.
Some of the key features of Azure Core AMQP library are:
You can build and run the tests locally by executing rushx test
. Explore the test
folder to see advanced usage and behavior of the public classes.
The core-amqp library depends on the rhea-promise library for managing connections, and for sending and receiving events over the AMQP protocol.
You can set the AZURE_LOG_LEVEL
environment variable to one of the following values to enable logging to stderr
:
You can also set the log level programmatically by importing the
@azure/logger package and calling the
setLogLevel
function with one of the log level values.
For example, when you set the log level to info
, the logs that are written for levels
warning
and error
are also emitted.
This SDK follows the Azure SDK for TypeScript guidelines
when determining which level to log to.
When setting a log level either programmatically or via the AZURE_LOG_LEVEL
environment variable,
any logs that are written using a log level equal to or less than the one you choose will be emitted.
You can alternatively set the DEBUG
environment variable to get logs when using this library.
This can be useful if you also want to emit logs from the dependencies rhea-promise
and rhea
as well.
Note: AZURE_LOG_LEVEL, if set, takes precedence over DEBUG.
Do not specify any azure
libraries via DEBUG when also specifying
AZURE_LOG_LEVEL or calling setLogLevel.
export DEBUG=azure:core-amqp:info
export DEBUG=azure:core-amqp:*,rhea*
DEBUG
environment variable as follows:export DEBUG=azure:core-amqp:*,rhea*,-rhea:raw,-rhea:message
DEBUG
environment variable as follows:export DEBUG=azure:core-amqp:(error|warning),rhea-promise:error,rhea:events,rhea:frames,rhea:io,rhea:flow
DEBUG
environment variable as shown above and then run your test script as follows:
out.log
and logging statement from the sdk go to debug.log
.
node your-test-script.js > out.log 2>debug.log
out.log
by redirecting stderr to stdout (&1), and then redirect stdout to a file:
node your-test-script.js >out.log 2>&1
out.log
.
node your-test-script.js &> out.log
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
If you'd like to contribute to this library, please read the contributing guide to learn more about how to build and test the code.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
FAQs
Common library for amqp based azure sdks like @azure/event-hubs.
We found that @azure/core-amqp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
Security News
Socket CEO Feross Aboukhadijeh discusses open source security challenges, including zero-day attacks and supply chain risks, on the Cyber Security Council podcast.
Security News
Research
Socket researchers uncover how threat actors weaponize Out-of-Band Application Security Testing (OAST) techniques across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.