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.
@niur/nestjs-service-bus
Advanced tools
NestJs custom transport for Azure Service Bus.
Azure Service Bus is a fully managed enterprise message broker with message queues and publish-subscribe topics (in a namespace). Service Bus is used to decouple applications and services from each other, providing the following benefits:
To start building Azure Service Bus-based microservices, first install the required packages:
$ npm i --save @azure/service-bus @niur/nestjs-service-bus
To use the Azure Service Bus strategy, pass the following options object to the createMicroservice()
method:
// main.ts
const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
strategy: new AzureServiceBusServer({
connectionString: 'Endpoint=sb://<Name>.servicebus.windows.net/;SharedAccessKeyName=<SharedAccessKeyName>;SharedAccessKey=<SharedAccessKey>',
options: {}
}),
});
The Azure Service Bus strategy exposes the properties described below.
retryOptions | Retry policy options that determine the mode, number of retries, retry interval etc (read more here). |
webSocketOptions | Options to configure the channelling of the AMQP connection over Web Sockets (read more here). |
userAgentOptions | Options for adding user agent details to outgoing requests (read more here). |
@Module({
imports: [
AzureServiceBusModule.forRoot([
{
name: 'SB_CLIENT',
connectionString: 'Endpoint=sb://<Name>.servicebus.windows.net/;SharedAccessKeyName=<SharedAccessKeyName>;SharedAccessKey=<SharedAccessKey>',
options: {},
},
]),
]
...
})
// or
@Module({
imports: [
AzureServiceBusModule.forRootAsync([
{
name: 'SB_CLIENT',
useFactory: (configService: ConfigService) => ({
connectionString: configService.get('connectionString'),
options: {}
}),
inject: [ConfigService],
},
]),
]
...
})
@Injectable()
constructor(
@Inject('SB_CLIENT') private readonly sbClient: AzureServiceBusClientProxy,
) {}
Event-based
const pattern = {
name: 'sample-topic', // topic name
options: {}
}; // queue name
const data = {
body: 'Example message'
};
this.sbClient.send(pattern, data).subscribe((response) => {
console.log(response); // reply message
});
Message-based
const pattern = {
name: 'sample-topic', // topic name
options: {}
}; // queue name
const data = {
body: 'Example message'
};
this.sbClient.emit(pattern, data);
To access the original Azure Service Bus message use the Subscription
decorator as follows:
@Subscription({
topic: 'sample-topic',
subscription: 'sample-subscription',
receiveMode: 'peekLock', // or receiveAndDelete
})
getMessages(@Payload() message: ServiceBusMessage) {
console.log(message);
}
Options
topic | Name of the topic for the subscription we want to receive from. |
subscription | Name of the subscription (under the `topic`) that we want to receive from. |
receiveMode | Represents the receive mode for the receiver. (read more here). |
subQueueType | Represents the sub queue that is applicable for any queue or subscription. (read more here). |
maxAutoLockRenewalDurationInMs | The maximum duration in milliseconds until which the lock on the message will be renewed by the sdk automatically. |
skipParsingBodyAsJson | Option to disable the client from running JSON.parse() on the message body when receiving the message. |
options | Options used when subscribing to a Service Bus queue or subscription. |
Nestjs Azure Service Bus is MIT licensed.
FAQs
NestJS Azure Service Bus Microservice Transport
The npm package @niur/nestjs-service-bus receives a total of 554 weekly downloads. As such, @niur/nestjs-service-bus popularity was classified as not popular.
We found that @niur/nestjs-service-bus demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer 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.