npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

redmq

v0.0.8

Published

simple message queue based on Redis streams

Downloads

3

Readme

RedMQ

simple message queue based on Redis streams

Only Redis 5.x and above support stream

Getting Started

npm install redmq
# yarn add redmq
# pnpm add redmq

Usage

import { RedMQ } from 'redmq'


const redmq = new RedMQ('id')

// producer
const producer = redmq.producer()
producer.send('my-topic', { body: 'body content' })

// consumer
const consumer = redmq.consumer(
  'group',
  ['topic1', 'topic2'],
  async (msg) => {
    // handle the message
  }
)

consumer.start()

Topic

The term topic used here is actually the key of stream in Redis, multiple topics means multiple streams.

Producer

Producer is simple and straightforward, the maxLen options is used for a capped stream, that means the messages will not exceed the maxLen(it's not accurate, since  using almost exact trimming (the ~ argument)).

Consumer

Consumers use pull strategy for fetching new messages, for the messages that are not processed successfully will be retried after a specific time.

Options:

  • timeout: message will be redelivered if timeout is reached

  • batchSize: how many messages will be fetched in one time for a consumer

  • maxDeliverTimes: the message will be abandon if the max deliver times reached

Connection

Each producer and consumer will share the same Redis connection by default, if you want the producer or consumer to use an individual connection, just set shareConnection to false, then a new connection will created for it.